我有一个包含 2 个文件的项目:
这是我的 main.go 文件:
package main
import "fmt"
import "math"
func main() {
xs := []float64{1, 2, 3, 4}
avg := math.Average(xs)
fmt.Println(avg)
}
和我的 math.go :
package math
func Average(xs []float64) float64 {
total := float64(0)
for _, x := range xs {
total += x
}
return total / float64(len(xs))
}
但是当我这样做的时候:
> bussiere@kusanagi [06:44:01 PM] [~/Workspace/bdrun/TestPack/src]
> -> % go install .
> # _/home/bussiere/Workspace/bdrun/TestPack/src ./main.go:8:9: undefined: math.Average bussiere@kusanagi [06:47:12 PM]
> [~/Workspace/bdrun/TestPack/src]-> % go run main.go
> # command-line-arguments ./main.go:8:9: undefined: math.Average
怎么来的?
问候和感谢
最佳答案
你很接近。你有什么:
bin/
pkg/
math.go
src/
main.go
但这不是 go
二进制文件所期望的。 src
文件夹下应该是每个项目的文件夹:
src/
myproject/
math/
math.go
main.go
当你希望一个 go 文件位于不同的包中时,它应该位于与新包同名的文件夹中。您需要更新数学导入。 import "math"
将导入标准库数学文件。制作上面的树结构后,在您的 main.go 中尝试 import "myproject/math"
。
您不必担心 pkg 或 bin 文件夹。您通常不需要特意将任何东西放入其中。
关于go - golang中的多文件项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50104849/