如何使用自定义包

时间:2017-09-08 11:04:46

标签: go

我有两个简单的go文件

main.go

package main

import "fmt"
import "go-package/math"

func main() {
    xs := []float64{1, 2, 3, 4}
    avg := math.Average(xs)
    fmt.Println(avg)
}

mymath.go

package math
func Average(xs []float64) float64 {
    total := float64(0)
    for _, x := range xs {
        total += x
    }
    return total / float64(len(xs))
}

文件和目录结构是:

$GOPATH
  src
    go-package
       math
         mymath.go
       main.go

当我导航到$ GOPATH / src / go-package,然后打开终端并运行命令go run main.go时,结果将打印出来。

然后,我导航到$ GOPATH / src / go-package / math,并运行命令go install,并在$GOPATH\pkg\windows_amd64\go-package\math.a成功安装包

然后我导航回$ GOPATH / src / go-package,并移除math directoy, 我重新运行命令go run main.go,发生错误:

main.go:4:8: cannot find package "go-package/math" in any of:
        D:\softwareInstalled\Go\src\go-package\math (from $GOROOT)
        D:\softwareInstalled\Go\GoPath\src\go-package\math (from $GOPATH)

我把数学包放在$GOPATH\pkg\windows_amd64\go-package\math.a

我想知道Go为什么不从这个目录中拿起包裹。

我怎样才能使用math.a?我应该把它放在哪里?

1 个答案:

答案 0 :(得分:0)

Golang使用导入包的源文件。因此,当您想在main.go中使用包go-package/math时,不应该从src/go-package/math中删除源文件。将它们留在项目中,一切都很好。

此外,go get还会将源文件加载到$GOPATH/src文件夹中。希望这会有所帮助。