【问题标题】:Why does the golang place the type specifier "after" the variable name?为什么 golang 将类型说明符放在变量名“之后”?
【发布时间】:2016-11-20 08:27:16
【问题描述】:

出于好奇,为什么golang 将类型说明符放在变量名之后,如下所示。不得不?还是碰巧?

type person struct {
    name string
    age  int
}

为什么不这样呢?恕我直言,它更自然,它保存了type 关键字。

struct person {
    string name
    int age
}

【问题讨论】:

  • 你可以在这里找到一些原因:blog.golang.org/gos-declaration-syntax
  • @sisoft 提供的资源非常好(但没有解释它的来源)。我的预感如下:由于 Go 有三个祖先(CSP、Pascal/Oberon 和 C),我想变量声明和定义样式继承自 Pascal/Oberon 行。
  • 您的问题的第二部分很简单:type 不仅仅定义了 structs。

标签: go


【解决方案1】:

认为 Go 编程语言遵循以下原则:

  • 声明以关键字开头,因此解析器可以使用单个标记前瞻来实现(如在 Pascal 中)
  • 声明的其余部分遵循英语语法,省略了每个多余的单词(也像 Pascal 中一样,但关键字更少)

例子:

  • Frequency 类型是由string 索引的map,映射到int
    type Frequency map[string]int
  • Point 类型是 struct,有两个字段,xy,类型为 int
    type Point struct { x, y int }

上面的句子更多地关注名称而不是类型,这是有道理的,因为名称传达了更多的含义。

如果我必须向新手程序员解释如何在 Go 中编写声明,我会让他们先用简单的英语描述它,然后删除每个 可能看起来多余的词。

到目前为止,我没有发现任何与这些规则相矛盾的地方。

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多