我有一个包含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
怎么来的?
问候并感谢
答案 0 :(得分:4)
你关闭了。你有什么:
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文件夹。你通常不需要在你的方式中放置任何东西。