什么';Go中命名标签的标准做法是什么?
并给出了命名包、类型、函数和变量的准则。还有一个关于包名的讨论。但是,似乎没有一篇文章讨论与什么';Go中命名标签的标准做法是什么?,go,coding-style,naming-conventions,control-flow,continue,Go,Coding Style,Naming Conventions,Control Flow,Continue,并给出了命名包、类型、函数和变量的准则。还有一个关于包名的讨论。但是,似乎没有一篇文章讨论与goto、break和continue一起使用的标签的命名约定 我相信最好的做法是完全避免使用标签,但是Go中那些控制流标签的标准约定是什么 请注意,此问题并非要求提供命名建议。我只是想知道谷歌提供了什么样的指南,或者他们是如何实际使用它的,这会很好。根据Go标准库和内部软件包的源代码,他们倾向于以通常命名变量的相同方式命名标签 因此,标签可以有大写或小写字符的任意组合,只要不使用下划线来书写任何内容 看
goto
、break
和continue
一起使用的标签的命名约定
我相信最好的做法是完全避免使用标签,但是Go中那些控制流标签的标准约定是什么
请注意,此问题并非要求提供命名建议。我只是想知道谷歌提供了什么样的指南,或者他们是如何实际使用它的,这会很好。根据Go标准库和内部软件包的源代码,他们倾向于以通常命名变量的相同方式命名标签 因此,标签可以有大写或小写字符的任意组合,只要不使用下划线来书写任何内容 看 混合帽 最后,Go中的惯例是使用
MixedCaps
或MixedCaps
而不是下划线来编写多字名称
一些例子:
在
CamelCase
中写入所有标签的所有示例片段。在规范和实现中,Loop
这个词通常缩写为L
如前所述:没有关于标签名称的正式公约、指南或标准实践。任何其他答案都是主观的。是的,写标签名称的惯例只是使用
MixedCaps
或MixedCaps
而不是下划线。@couch:换句话说,标签没有惯例。在Go中命名任何东西都有现有的约定。
continue LOOP
break loop
break Loop
break countloop
break parseField
break GeneratePrimes
func f3() {
L1:
L2:
L3:
for {
break L1 /* ERROR "invalid break label L1" */
break L2 /* ERROR "invalid break label L2" */
break L3
continue L1 /* ERROR "invalid continue label L1" */
continue L2 /* ERROR "invalid continue label L2" */
continue L3
goto L1
goto L2
goto L3
}
}
OuterLoop:
for i = 0; i < n; i++ {
for j = 0; j < m; j++ {
switch a[i][j] {
case nil:
state = Error
break OuterLoop
case item:
state = Found
break OuterLoop
}
}
}
RowLoop:
for y, row := range rows {
for x, data := range row {
if data == endOfRow {
continue RowLoop
}
row[x] = data + bias(x, y)
}
}
goto Error
goto L // BAD
v := 3
L:
if n%2 == 1 {
goto L1
}
for n > 0 {
f()
n--
L1:
f()
n--
}