mod有三种状态,使用如下命令在终端中更改。
go env -w GO111MODULE=状态
GO111MODULE=off
即:把依赖包存放在GOPATH/src路径下,通过<go get 依赖包路径>获取
GO111MODULE=on
即:把依赖包存放在GOPATH/pkg/mod路径下。
GO111MODULE=auto
不使用module引入第三方库:1、当前目录在GOPATH/src之外且该目录包含go.mod文件
2、当前文件在包含go.mod文件的目录下面
注:不使用module功能时,文件夹中不应该出现go.mod文件!!!否则会报错。
PATH/src
package main
import (
"fmt"
"gonum.org/v1/gonum/stat"
)
func main() {
arr := []float64{1,2,4,5,6,7,8}
v := stat.Variance(arr,nil)
fmt.Printf("方差=%f\n",v)
}
cannot find package "gonum.org/v1/gonum/stat" in any of: E:\Go\src\gonum.org\v1\gonum\stat (from $GOROOT) E:\Goproject\src\gonum.org\v1\gonum\stat (from $GOPATH)
go env
GOPATH/src
go get gonum.org/v1/gonum/stat
no required module provides package gonum.org/v1/gonum/stat; to add it: go get gonum.org/v1/gonum/stat
使用module引入第三方库:
GOPATH/pkg/mod
对使用mod引入的方法举个例子:
首先在GOPATH/src 目录之外新建工程,或者将老工程移到GOPATH/src 目录之外。
这里在GOPATH/src 目录之外新建test文件夹,并在文件夹里新建hello.go文件:
package main
import (
"fmt"
"gonum.org/v1/gonum/stat"
)
func main() {
arr := []float64{1,2,4,5,6,7,8}
v := stat.Variance(arr,nil)
fmt.Printf("方差=%f\n",v)
}
然后在当前目录下,命令行运行 go mod init + 模块名称,用来初始化模块,即:
go mod init hello
运行完成后,当前目录下会生成一个go.mod文件,内容如下:
直接在命令行里运行:
go run hello.go
no required module provides package gonum.org/v1/gonum/stat; to add it: go get gonum.org/v1/gonum/stat
go get gonum.org/v1/gonum/stat
下载成功会提示added,此时下载的依赖包会被自动写入到go.mod文件中,GOPATH/pkg/mod路径下会多出gonum.org文件夹,都说明依赖包下载成功啦!
到这里就可以美美运行啦。两种方法都可以成功!!