为了账号安全,请及时绑定邮箱和手机立即绑定

设置整个 const 块的类型

设置整个 const 块的类型

Go
德玛西亚99 2022-07-11 17:01:29
我有一个自定义数据类型type Custom string还有一个 const 块const (    Item1 = "placeholder"    ...    Item10 = "placeholder")是否可以为 const 块中的每个项目设置自定义类型,而不必将其放置在每个条目中?
查看完整描述

1 回答

?
BIG阳

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")

)


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号