我正在尝试学习Go并遵循现有的约定,但是,作为每个约定,您都需要先了解它们,然后才能很好地使用它们,经过一些研究,我没有找到以下问题的确切答案:
我已经在自己的内部建立了$GOPATH一个类似以下结构的项目:
$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在每个package文件夹中都有一个文件,对吗?
package.go
如果是这样,在内部numbers.go,我将如何导入rational.go,real.go以及complex.go?
numbers.go
rational.go
real.go
complex.go
然后,是否可能会有类似的内容:
// real.go package numbers type Real struct { Number float64 }
…并且主要是做fmt.Println(numbers.Real{2.0})什么的?
fmt.Println(numbers.Real{2.0})
首先:您的安装程序src缺少文件夹:应该是$ GOPATH / src /github.com / …”
src
第二:不要使用相对进口。只是不要这样做。导入包裹编号,例如import "github.com/username/projectname/number"
import "github.com/username/projectname/number"
对您的问题:
否。如果您的文件夹中有Go文件,它们会合并到一个程序包中,但是您不必强迫将程序包放入所有文件夹中。
所有文件rational.go,complex.go并且real.go通常会下手package numbers。都是包号的一部分,您 不 包括文件,而是包。当前软件包无需导入。所以不行。
package numbers
是