当编写一个单独的包用作命令时,这是惯用的:将所有标识符命名为private或将所有标识符命名为public?

Bur*_*hi5 5 idioms private public idiomatic go

在Go中,公共名称以大写字母开头,私有名称以小写字母开头.

我正在编写一个不是库的程序,而且是一个程序包.是否有任何Go成语规定我的标识符是全部公开还是全部私有?我不打算将此软件包用作库或应该从其他Go程序导入的内容.

我想不出有什么理由想要混合物.它"感觉"像是私有化是正确的选择.


我认为我没有得到任何具体的答案,但是Nate最接近于告诉我要考虑"出口与非出口"而不是"公共与私人".

这让我相信不出口任何东西是最好的方法.在最糟糕的情况下,如果我最终从我的应用程序中导入另一个包中的代码,我将不得不重新考虑应该导出的内容和不应该导出的内容.这对IMO来说是件好事.

Nat*_*ate 3

如果您试图调整自己的思维方式,使其更加符合 Go 语言习惯,那么您应该停止将变量、函数和方法视为公共或私有。更准确的说法是导出或不导出。它绝对有更像 C 的感觉。

正如其他人所说,应用程序代码实际上不需要导出。如果出于组织原因您决定将程序分成包,则可以使用子包。在工作中我们决定这样做。我们有:

projectgopath/src/projectname
                  projectname/subcomponent1
                  projectname/subcomponent2
Run Code Online (Sandbox Code Playgroud)

到目前为止我真的很喜欢这个结构。它有助于分离关注点,但不会达到在主项目之外制作包的程度。意图很明确。该子包的预期用途仅适用于该程序......

新的 go build 和 go install 命令似乎可以很好地处理它。我们将组件分组在包中,并通过导出仅公开必要的位。