gpt4 book ai didi

go - 在 Go 中命名标签的标准做法是什么?

转载 作者:行者123 更新时间:2023-12-01 22:45:55 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

1年前关闭。




Improve this question




Go specEffective Go给出了命名包、类型、函数和变量的指南。还有一个blog post讨论包名。但是似乎没有一篇文章谈论与 goto 一起使用的标签的命名约定。 , breakcontinue .
我认为最好的做法是完全避免使用标签,但是 Go 中这些控制流标签的标准约定是什么?
请注意,此问题不要求提供命名建议。我只是认为了解 Google 提供的有关它的指南或他们如何实际使用它会很好。

最佳答案

根据 Go 标准库和内部包的源代码,他们倾向于以与通常命名变量相同的方式命名标签。
因此,标签可以包含大写或小写字符的任意组合,只要您不使用下划线书写任何内容即可。
https://golang.org/doc/effective_go.html#mixed-caps

MixedCaps

Finally, the convention in Go is to use MixedCaps or mixedCaps rather than underscores to write multiword names.


一些例子:
https://golang.org/src/cmd/internal/obj/x86/pcrelative_test.go#L102
continue LOOP
https://golang.org/src/compress/lzw/reader.go#L198
break loop
https://golang.org/src/compress/flate/deflate.go#L402
break Loop
https://golang.org/src/debug/gosym/symtab.go#L429
break countloop
https://golang.org/src/encoding/csv/reader.go#L308
break parseField
https://golang.org/src/crypto/dsa/dsa.go#L128
break GeneratePrimes
https://golang.org/src/go/types/testdata/labels.src
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
}
}

Go language spec 中的所有示例片段将所有标签写入 CamelCase .和字 Loop通常缩写为 L在规范和实现中。
https://golang.org/ref/spec#Break_statements
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
}
}
}
https://golang.org/ref/spec#Continue_statements
RowLoop:
for y, row := range rows {
for x, data := range row {
if data == endOfRow {
continue RowLoop
}
row[x] = data + bias(x, y)
}
}
https://golang.org/ref/spec#Goto_statements
goto Error
    goto L  // BAD
v := 3
L:
if n%2 == 1 {
goto L1
}
for n > 0 {
f()
n--
L1:
f()
n--
}

关于go - 在 Go 中命名标签的标准做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64039172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com