为什么struct literals是"字面的"

nho*_*oyr 3 struct literals go

在golang什么是结构文字?

即使存在变量,为什么以下是文字?即使不是const,结构也不是字面上可变的吗?那怎么有意义呢.

MyType{Field: var)
Run Code Online (Sandbox Code Playgroud)

它有一个变量,但它是一个"文字"?

另外,为什么在你第一次初始化时它只被称为"struct literal"?

Cri*_*ole 11

编程语言在引用构造某些数据结构的句法方法时使用"Literal"一词.这意味着它不是通过创建一个空的并且随时添加或减去构造的.

相比:

MyType{Field: myVariable}
Run Code Online (Sandbox Code Playgroud)

var x = new(MyType)
x.Field = myVariable
Run Code Online (Sandbox Code Playgroud)

好处是代码的外观以某种方式反映了数据结构.缺点是您必须事先知道布局并且已经初始化了内容,这是不可能的,例如,如果您正在构建具有未知密钥的地图.

GoLang语言文档了解更多信息:

  • `这意味着它不是通过创建一个空的并在你进行时添加或减去来构建的。` 对我来说非常清楚。谢谢@andyfeller (5认同)
  • 其他例子:`1`是一个int literal,``foo"`是一个字符串文字,等等. (2认同)
  • 记住这一点的一种简单方法是,该结构的数据在代码中恰好在“字面上”。 (2认同)