作者:ltl3265164 | 来源:互联网 | 2022-12-04 17:26
我正在尝试使用Visual Studio Code学习Go,我猜它正在使用Go linter.我创建了这个结构来将JSON对象映射到.
type someAPI struct {
ApiEndpoint string `json:"apiEndpoint"`
ApiVersion string `json:"apiVersion"`
...
}
我得到了这些警告......
struct field ApiEndpoint应该是APIEndpoint
struct field ApiVersion应该是APIVersion
我做了一些谷歌搜索,我找不到任何关于结构字段名称的要求.我发现的最多的是,如果你想让一个领域公开,你必须把它资本化.
那么为什么这个linter警告我这些名字?
我做了一些测试,改为Api
,Abc
而且linter没有警告我把它改成"ABC".所以我必须假设它正在检查以"Api"开头的名字.
字段名称的Go约定是什么?或者换句话说,还有其他我应该了解的约定吗?
1> Topo..:
对于大多数情况,Go中的命名约定只是使用驼峰大小写,如果是公共字段则以大写字母开头,如果不是,则以小写字母开头.但是在像API或URL这样的缩写词中,它们是以完整的大写形式编写的,例如.func ProxyURL(fixedURL *url.URL)
在http包上.
编辑:我搜索了一点,并在Go Code Review评论中有关于首字母缩略词的指南.它讨论了Initialisms部分中的首字母缩略词:
名称中的单词是首字母或首字母缩略词(例如"URL"或"NATO")具有一致的大小写.例如,"URL"应显示为"URL"或"url"(如"urlPony"或"URLPony"),而不是"Url".举个例子:ServeHTTP不是ServeHttp.对于具有多个初始化"单词"的标识符,使用例如"xmlHTTPRequest"或"XMLHTTPRequest".
当"ID"是"标识符"的缩写时,此规则也适用于"ID",因此请写"appID"而不是"appId".
所以缩略语的规则是他们应该有不变的情况.在您的情况下,因为它们必须以大写"A"开头,您应该将它们写为"API".
这也只是我个人的意见,我知道示例中的代码可能不是您正在使用的确切代码,但如果是,我认为在字段名称中包含结构名称是一种不好的做法.您正在做api.APIField
但api.Field
更容易阅读,如果您知道该对象是API,那么毫无疑问该字段属于API.