我正在尝试学习 Go 并遵循现有的约定,但是,作为每个约定,您需要先了解它们才能很好地使用它们,经过一番研究后,我没有找到以下问题的确切答案:
我在我的 $GOPATH
中建立了一个项目,其结构如下:
$GOPATH/
github.com/
username/
projectname/
main.go
numbers/
rational.go
real.go
complex.go
我的主要是:
package main
import(
"fmt"
"./numbers"
)
func main() {
fmt.Println(numbers.Real{2.0})
}
所以,问题是:
我读到我需要在每个包文件夹中有一个文件
package.go
,对吗?如果是这样,在
numbers.go
中,我将如何导入rational.go
、real.go
和complex.go
?然后,有没有可能有这样的东西:
// real.go package numbers type Real struct { Number float64 }
... 主要做 fmt.Println(numbers.Real{2.0})
?
最佳答案
首先:您的安装程序缺少文件夹 src
:它应该是 `$GOPATH/src/github.com/..."
第二:不要使用相对导入。只是不要这样做。导入包号,如 import "github.com/username/projectname/number"
您的问题:
没有。如果您在一个文件夹中有 Go 文件,它们将组合到一个包中,但您不必强制将一个包放入所有文件夹中。
所有文件
rational.go
、complex.go
和real.go
通常都以包号开头
。这些都是包号的一部分,您不包括文件但包括包。不需要导入当前包。所以:没有。是
关于Go语言包结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21616276/