gpt4 book ai didi

go - 当编写一个包用作命令时,这是惯用的 : name all identifiers as private or name all identifiers as public?

转载 作者:IT王子 更新时间:2023-10-29 01:27:00 30 4
gpt4 key购买 nike

在 Go 中,公共(public)名称以大写字母开头,私有(private)名称以小写字母开头。

我正在编写一个不是库的程序,它是一个单独的包。是否有任何 Go 习语规定我的标识符应该全部公开还是全部私有(private)?我不打算将这个包用作库或作为应该从另一个 Go 程序导入的东西。

我想不出我想要混合物的任何理由。它“感觉”好像完全私有(private)化是正确的选择。


我认为我没有得到任何具体的答案,但 Nate 最接近告诉我要考虑“导出与非导出”而不是“公共(public)和私有(private)”。

这让我相信不导出任何东西是最好的方法。在最坏的情况下,如果我最终从另一个包中的应用程序导入代码,我将不得不重新考虑应该导出什么,不应该导出什么。在我看来,这是一件好事。

最佳答案

如果您正试图调整您的思维方式以更符合 Go 的习惯,您应该停止将变量、函数和方法视为公共(public)或私有(private)。更准确的术语是导出或不导出。它肯定有更像 C 的感觉。

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

projectgopath/src/projectname
projectname/subcomponent1
projectname/subcomponent2

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

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

关于go - 当编写一个包用作命令时,这是惯用的 : name all identifiers as private or name all identifiers as public?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9677297/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com