猿问

什么是 Golang 结构字段命名约定?

我正在尝试使用 Visual Studio Code 学习 Go,我猜它正在使用 Go linter。我创建了这个结构来将 JSON 对象映射到。

type someAPI struct {
    ApiEndpoint string   `json:"apiEndpoint"`
    ApiVersion  string   `json:"apiVersion"`
    ...
}

我收到这些警告......

结构字段 ApiEndpoint 应该是 APIEndpoint

结构字段 ApiVersion 应该是 APIVersion

我做了一些谷歌搜索,但找不到与此相关的结构字段名称的任何要求。我发现的最多的是,如果你想公开一个领域,你必须将它资本化。

那么为什么这个 linter 警告我这些名字呢?

我通过更改为进行了一些测试ApiAbc但 linter 没有警告我将其更改为“ABC”。所以我必须假设它正在检查以“Api”开头的名称。

字段名称的 Go 约定是什么?或者换句话说,还有其他我应该知道的约定吗?


www说
浏览 113回答 2
2回答

慕田峪7331174

对于大多数情况,Go 中的命名约定只是使用驼峰式大小写,如果是公共字段则以大写开头,否则以小写开头。但是在像 API 或 URL 这样的首字母缩略词中,它们是用完整的大写字母写的,例如。在http 包func ProxyURL(fixedURL *url.URL)上。我搜索了更多,Go Code Review Comments上有首字母缩略词指南。它在Initialisms部分讨论首字母缩略词:名称中的首字母缩略词或首字母缩略词(例如“URL”或“NATO”)具有一致的大小写。例如,“URL”应该显示为“URL”或“url”(如“urlPony”或“URLPony”),绝不能显示为“Url”。例如:ServeHTTP 而不是 ServeHttp。对于具有多个初始化“单词”的标识符,使用例如“xmlHTTPRequest”或“XMLHTTPRequest”。这个规则也适用于“ID”是“identifier”的缩写,所以写“appID”而不是“appId”。所以首字母缩略词的规则是它们应该有不变的大小写。在您的情况下,因为它们必须以大写字母“A”开头,所以您应该将它们写为“API”。此外,这只是我的个人意见,我知道示例中的代码可能不是您正在使用的确切代码,但如果是,我认为在字段名称中包含结构名称是一种不好的做法。你正在做api.APIField但api.Field更容易阅读,如果你知道该对象是一个 API,那么毫无疑问该字段属于一个 API。

宝慕林4294392

变量函数命名的约定是 Camel Case(混合大写)。如果名称以大写字母开头,则可以导出变量/函数。包总是小写的。接口应以-er另一方面,Golint 超越了 Go 的命名约定。单词有一些规则,在您的情况下,您正在遵守其中一条规则。
随时随地看视频慕课网APP

相关分类

Go
我要回答