Fal*_*len 8 naming-conventions go
引入_变量名称有什么特殊目的吗?
例子:
func (_m *MockTracker)...
从这里。
规范中标识符名称中的前导下划线没有定义特殊含义:
身份标识
标识符命名程序实体,例如变量和类型。标识符是一个或多个字母和数字的序列。标识符中的第一个字符必须是字母。
identifier = letter { letter | unicode_digit } .Run Code Online (Sandbox Code Playgroud)a _x9 ThisVariableIsExported ??
您的示例是从mockgen.go生成的代码。
在您链接的包中,您会看到以下内容:
// Recorder for MockTracker (not exported)
type _MockTrackerRecorder struct {
mock *MockTracker
}
Run Code Online (Sandbox Code Playgroud)
mockgen 包中的 sanitize 函数在包名称前面加上下划线,它似乎是为了保持一致性并确保标识符名称保持私有(即不导出,因为它们以大写字母开头)。但这不是 Go 规范中定义的东西。
// sanitize cleans up a string to make a suitable package name.
func sanitize(s string) string {
t := ""
for _, r := range s {
if t == "" {
if unicode.IsLetter(r) || r == '_' {
t += string(r)
continue
}
} else {
if unicode.IsLetter(r) || unicode.IsDigit(r) || r == '_' {
t += string(r)
continue
}
}
t += "_"
}
if t == "_" {
t = "x"
}
return t
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8421 次 |
| 最近记录: |