我正在努力学习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})
?
答案 0 :(得分:10)
首先:您的安装程序错过了文件夹src
:它应该是`$ GOPATH / src /github.com /..."
第二:不要使用相对进口。只是不要这样做。导入包裹号码,例如import "github.com/username/projectname/number"
问题:
没有。如果您将文件夹中的Go文件合并到一个包中,但您没有强制将包放入所有文件夹。
所有文件rational.go
,complex.go
和real.go
通常都以package numbers
开头。这些都是包裹编号的一部分,您可以不包含文件,但包裹。无需导入当前包。所以:不。
是