我必須遵循兩個簡單的去文件如何使用自定義的包
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-打包並打開終端並運行命令:go run main.go
,結果打印出來。
然後,我瀏覽到$ GOPATH/src目錄/去封裝/數學和運行命令go install
,和包成功安裝在$GOPATH\pkg\windows_amd64\go-package\math.a
然後我導航回到$ GOPATH/src目錄/去包,並刪除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?我應該在哪裏放置它?
你爲什麼要使用'math.a'? go工具不使用原始對象文件,它需要構建包。 – JimB
謝謝@JimB。我是Go新手。我認爲math.a是一個編譯的東西,可以導入/用作第三方的東西,比如Java jar文件? – Tom
'/ pkg /'中的預編譯包只是一個緩存。在Go 1.7中引入了僅包含二進制包,但除了提及它們之外,我還沒有看到任何人使用它們。他們的建議是在這裏:https://github.com/golang/proposal/blob/master/design/2775-binary-only-packages.md – Art