我正在尝试学习Go,使用代码,我猜它使用的是Go linter。我创建了这个结构来将一个JSON对象映射到。
type someAPI struct {
ApiEndpoint string `json:"apiEndpoint"`
ApiVersion string `json:"apiVersion"`
...
}我收到警告..。
结构字段ApiEndpoint应该是APIEndpoint 结构字段ApiVersion应该是APIVersion
我做了一些谷歌,我找不到任何关于结构化字段名的要求。我发现的最重要的是,如果你想公开一个领域,你必须把它资本化。
为什么这个林特要警告我这些名字?
我通过将Api改为Abc进行了一些测试,而linter没有警告我将其更改为"ABC“。所以我得假设它是在检查以"Api“开头的名字。
字段名的Go约定是什么?或者换句话说,我是否应该知道其他的约定?
发布于 2018-09-16 21:00:57
在大多数情况下,Go中的命名约定只是使用camel大小写,如果是公共字段,则从大写开始;如果不是,则使用小写。但在像API或URL这样的缩略语中,它们是用大写字母(如大写)写的。func ProxyURL(fixedURL *url.URL) on http包。
编辑:,我搜索了一些更多的内容,还有关于Go代码评审评论缩略词的指导原则。它在首字母部分中讨论了缩略语:
名字中的单词是首字母或首字母缩略词。"URL“或”北约“)有一个一致的例子。例如,"Url“应该以"URL”或"URL“(如"urlPony”或"URLPony")的形式出现,而不是以"url“的形式出现。举个例子: ServeHttp而不是ServeHTTP。对于具有多个初始化“word”的标识符,例如使用"XMLHTTPRequest“或"xmlHTTPRequest”。 当"ID“是”标识符“的缩写时,这个规则也适用于”ID“,所以写"appId”而不是"appID“。
因此,缩略语的规则是,它们应该有固定的情况。在您的例子中,因为它们必须以大写字母"A“开头,所以您应该将它们写成"API”。
这也是我个人的观点,我知道这个例子中的代码可能不是你正在使用的代码,但如果是的话,我认为在字段名中包含结构名是一种不好的做法。您正在做api.APIField,但是api.Field更容易阅读,如果您知道对象是API,那么毫无疑问,字段属于API。
发布于 2018-09-16 21:32:57
正如这里在您的问题和@topo的答案中提到的那样,变量函数命名的惯例是Camel情况(混合大写)。如果名称以大写字母开头,则可以导出变量/函数。
包总是小写的。
接口应该以-er结束
您可以在有效的go命名会话中阅读更多内容。
另一方面,戈林的命名超越了Go惯例。有几个规则的文字,在你的情况下,你是打其中一个规则。您可以在这里看到完整的列表:https://github.com/golang/lint/blob/master/lint.go#L751
https://stackoverflow.com/questions/52358247
复制相似问题