golang中的多个文件项目

时间:2018-04-30 16:49:01

标签: go

我有一个包含2个文件的项目:

enter image description here

这是我的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

怎么来的?

问候并感谢

1 个答案:

答案 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文件夹。你通常不需要在你的方式中放置任何东西。