2016-11-20 08:27 阅读 91


Just out of curiosity, why does the golang place the type specifier after the variable name like below. Have to? Or happen to?

type person struct {
    name string
    age  int

Why not just like this? It's more natural IMHO, and it saves the type keyword.

struct person {
    string name
    int age
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    dpm91915 dpm91915 2016-11-20 08:53

    I think the Go programming language follows these principles:

    • declarations start with a keyword, so that the parser can be implemented with a single token look-ahead (like in Pascal)
    • the rest of the declaration follows the English grammar, with every redundant word left out (also like in Pascal, but with fewer keywords)


    • The type Frequency is a map indexed by string, mapping to int
      type Frequency map[string]int
    • The type Point is a struct with two fields, x and y of type int
      type Point struct { x, y int }

    The above sentences focus more on the names than on the types, which makes sense since the names convey more meaning.

    If I had to explain to novice programmers how to write declarations in Go, I would let them first describe it in plain English and then remove every word that might even seem redundant.

    Up to now, I didn't find any contradictions to these rules.

    点赞 1 评论 复制链接分享