去库包名称

时间:2015-07-04 08:03:09

标签: go package names

我对外部Go库的包命名有一些疑问。

如果使用" text"等通用名称,我感兴趣被认为是一种好习惯?请记住,我不能声明一个"嵌套包"并且我正在构建的库处理文本处理,是否可以使用名为" text"的包。或者我是否应该将库名称作为包名称?

我正在构建一组库(不同的项目),我想将它们组合在同一个包中。这也有问题吗?我是Go社区的新手,我仍然不确定包装污染是否存在问题(只要我在代码中导入少量包装,我就不会发现问题。)

1 个答案:

答案 0 :(得分:7)

该命名主题的引用是" blog: Package names"

它包括:

  

避免不必要的包名冲突   虽然不同目录中的包可能具有相同的名称,但经常一起使用的包应具有不同的名称。这减少了混淆以及客户端代码中本地重命名的需要。出于同样的原因,请避免使用与io或http等流行标准软件包相同的名称。

同时检查您的package publishing practice,因为这有助于明确您的{" text"来自其他人的包裹。

如" An Introduction to Programming in Go / Packages":

所示
  

math是Go的标准发行版中包的名称,但由于Go包可以是分层的,因此我们可以安全地为我们的包使用相同的名称。 (真正的数学包只是数学,我们的是golang-book/chapter11/math

     

当我们导入math库时,我们使用其全名(import "golang-book/chapter11/math"),但在math.go文件中我们只使用名称的最后一部分({{1} })。

     

当我们从库中引用函数时,我们也只使用短名称数学。如果我们想在同一个程序中使用这两个库,Go允许我们使用别名:

package math
  

import m "golang-book/chapter11/math" func main() { xs := []float64{1,2,3,4} avg := m.Average(xs) fmt.Println(avg) } 是别名。

mentioned in the comments elithrar Dave Cheney additional tips feature of go get有一些AlexW

  

在其他语言中,通过在其前面添加公司名称(例如m)来确保您的包具有唯一的命名空间是很常见的。
  如果每个人只编写与他们控制的域相对应的包,则几乎不可能发生冲突。

     

在Go中,惯例是在源代码的导入路径中包含源代码的位置,即

com.sun.misc.Unsafe
  

这不是语言所必需的,只是here