繁体   English   中英

什么是Golang结构域命名约定?

[英]What are Golang Struct Field Naming Conventions?

我正在尝试使用Visual Studio Code学习Go,并且我猜它正在使用Go linter。 我创建了此结构以将JSON对象映射到其中。

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

我收到这些警告...

结构字段ApiEndpoint应该是APIEndpoint

struct字段ApiVersion应该是APIVersion

我做了一些谷歌搜索,因此找不到关于结构字段名称的任何要求。 我发现的最多的是,如果您想公开一个领域,则必须将其大写。

那么,这羽短绒棉为什么要警告我这些名字呢?

我通过将Api更改为Abc进行了一些测试,而短绒棉布没有警告我将其更改为“ ABC”。 因此,我必须假设它正在检查以“ Api”开头的名称。

Go字段名称的约定是什么? 换句话说,我还应该了解其他约定吗?

在大多数情况下,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”的缩写时,此规则也适用于“ ID”,因此请写“ appID”而不是“ appId”。

因此,首字母缩略词的规则是它们应具有恒定的大小写。 在您的情况下,因为它们必须以大写字母“ A”开头,所以应将它们写为“ API”。

同样,这只是我个人的看法,我知道示例中的代码可能与您使用的代码不完全相同,但是如果是这样,我认为在字段名称中包含结构名称是一种不好的做法。 您正在执行api.APIField但是api.Field更易于阅读,并且如果您知道对象是API,那么毫无疑问,该字段属于API。

就像您的问题和@topo的答案中提到的那样,函数命名的变量约定为Camel Case(混合大小写)。 如果名称以大写字母开头,则可以导出变量/函数。

软件包总是小写。

接口应以-er结尾

您可以在有效的命名流程中阅读更多内容

另一方面,Golint超越了Go的命名约定。 有一些单词规则,您遇到的是其中一个规则。 您可以在此处查看完整列表: https : //github.com/golang/lint/blob/master/lint.go#L751

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM