smwikipedia
smwikipedia

Reputation: 64205

Why does the golang place the type specifier "after" the variable name?

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
}

Upvotes: 10

Views: 2969

Answers (1)

Roland Illig
Roland Illig

Reputation: 41627

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)

Examples:

  • 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.

Upvotes: 12

Related Questions