我有两个简单的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?我应该把它放在哪里?
答案 0 :(得分:0)
Golang使用导入包的源文件。因此,当您想在main.go中使用包go-package/math
时,不应该从src/go-package/math
中删除源文件。将它们留在项目中,一切都很好。
此外,go get
还会将源文件加载到$GOPATH/src
文件夹中。希望这会有所帮助。