Go语言包结构
我正在努力学习围棋并遵循现有的惯例,但是,正如每个惯例一样,在使用它们之前,你需要先了解它们,经过一些研究,我没有找到以下问题的确切答案: 我在我的Go语言包结构,go,Go,我正在努力学习围棋并遵循现有的惯例,但是,正如每个惯例一样,在使用它们之前,你需要先了解它们,经过一些研究,我没有找到以下问题的确切答案: 我在我的$GOPATH中设置了一个项目,采用类似的结构: $GOPATH/ github.com/ username/ projectname/ main.go numbers/ rational.go real.go complex.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})
}
因此,问题是:
包。进入每个包文件夹中,对吗
numbers.go
中,我将如何导入rational.go
、real.go
和complex.go
// real.go
package numbers
type Real struct {
Number float64
}
。。。在main do
fmt.Println(numbers.Real{2.0})
?首先:您的设置错过了文件夹src
:它应该是“$GOPATH/src/github.com/…”
第二:不要使用相对导入。只是不要这样做。导入软件包编号,如Import“github.com/username/projectname/number”
关于你的问题:
rational.go
、complex.go
和real.go
通常以包编号开始。这些文件都是包编号的一部分,您不包括文件,但包括包。不需要导入当前包。因此:否
事实上,是的,我使用的是
src
,在问题1中,我实际上是指packagename.go
,但是你的帮助非常有用,我注意到我犯了一个愚蠢的错误。非常感谢。不,包foo不需要文件foo.go。文件栏以“package foo”开头很好(但奇怪)。”请不要使用“相对导入”。错误的做法,不是预期的方式,将来可能不起作用,软件包不再可以获取。golang邮件列表中有很多详细信息。或者在这里查看。