1 回答

TA贡献1859条经验 获得超6个赞
规范:常量声明:
ConstDecl = "const" ( ConstSpec | "(" { ConstSpec ";" } ")" ) .
ConstSpec = IdentifierList [ [ Type ] "=" ExpressionList ] .
常量声明是一系列常量规范,其中每个都包含可选类型。
可能被利用的一件事是:
在带括号的const声明列表中,表达式列表可以从除第一个 ConstSpec 之外的任何内容中省略。这样的空列表等价于对前面的第一个非空表达式列表及其类型(如果有)的文本替换。因此,省略表达式列表等同于重复之前的列表。标识符的数量必须等于上一个列表中的表达式数量。与iota常量生成器一起,这种机制允许轻量级的顺序值声明......
因此,例如在下面的示例中,两者都Item1将Item2是类型Custom:
const (
Item1 Custom = "v1"
Item2
)
这里的问题是两者Item1和Item2将具有相同的"v1"值。iota除非您在表达式中使用,否则这并不是真正有用。
只指定一次类型的一种方法是在值之前列出标识符:
const (
Item1, Item2 Custom = "v1", "v2"
)
在上面的示例中,两者Item1都Item2属于类型,请在Go PlaygroundCustom上尝试一下。这里的缺点是标识符可能“远离”它的值,这比在单独的行中列出它们更不可读:
const (
Item1 Custom = "v1"
Item2 Custom = "v2"
)
或者,您可以使用类型化的常量值将类型“移动”到表达式:
const (
Item1 = Custom("v1")
Item2 = Custom("v2")
)
- 1 回答
- 0 关注
- 137 浏览
添加回答
举报