为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
www说 2023-04-04 15:31:31
我正在尝试使用 Visual Studio Code 学习 Go,我猜它正在使用 Go linter。我创建了这个结构来将 JSON 对象映射到。type someAPI struct {     ApiEndpoint string   `json:"apiEndpoint"`     ApiVersion  string   `json:"apiVersion"`     ... }我收到这些警告......结构字段 ApiEndpoint 应该是 APIEndpoint结构字段 ApiVersion 应该是 APIVersion我做了一些谷歌搜索,但找不到与此相关的结构字段名称的任何要求。我发现的最多的是,如果你想公开一个领域,你必须将它资本化。那么为什么这个 linter 警告我这些名字呢?我通过更改为进行了一些测试Api,Abc但 linter 没有警告我将其更改为“ABC”。所以我必须假设它正在检查以“Api”开头的名称。字段名称的 Go 约定是什么?或者换句话说,还有其他我应该知道的约定吗?
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

对于大多数情况,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.APIFieldapi.Field更容易阅读,如果你知道该对象是一个 API,那么毫无疑问该字段属于一个 API。


查看完整回答
反对 回复 2023-04-04
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

变量函数命名的约定是 Camel Case(混合大写)。如果名称以大写字母开头,则可以导出变量/函数。

包总是小写的。

接口应以-er

另一方面,Golint 超越了 Go 的命名约定。单词有一些规则,在您的情况下,您正在遵守其中一条规则。


查看完整回答
反对 回复 2023-04-04
  • 2 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信