go从0到1项目实战体系十:go包管理
go mod是Go官⽅引⼊的⼀个依赖管理⼯具.
1. 引入一个本地包:
(1). 设置环境变量引入go module:
$ set GO111MODULE=on
$ go mod init topic.com.cn(模块名)
(2). 文件目录:
topic.com
└─topic├─core # 本地包在项目中│ └─tools.go├─main.go└─go.mod
(3). topic.com/topic/main.go:
package main
import ("topic.com.cn/core" # 这个并不是目录名字topic.com,而是上面设置的模块名
)
func main() {core.ShowName()
}
(4). topic.com/topic/go.mod:
module topic.com
go 1.12
(5). topic.com/topic/core/tools.go:
package core
import "fmt"
func ShowName() {fmt.Println("david")
}
1.1 包任意位置的引用方式:
(1). 文件目录:
topic.com
├─topic
│ ├─main.go
│ └─go.mod
└─core├─tools.go └─go.mod
(2). topic.com/topic/main.go:
package main
import ("core"
)
func main() {core.ShowName()
}
(4). topic.com/topic/go.mod:
module topic.com
require core v0.0.0 # 包名 版本
replace core v0.0.0 => ../core # 包的引用
go 1.12
(5). topic.com/core/tools.go:
package core
import "fmt"
func ShowName() {fmt.Println("david")
}
(6). topic.com/core/go.mod:
module core
go 1.12
2. 引入第三方包(sql-driver为例):
(1). 在topic.com/topic目录下执行:
$ go get github.com/go-sql-driver/mysql@mastergo: finding github.com/go-sql-driver/mysql mastergo: downloading github.com/go-sql-driver/mysql v1.4.1-0.20191022112324-6ea7374bc1b0go: extracting github.com/go-sql-driver/mysql v1.4.1-0.20191022112324-6ea7374bc1b0注:
如果需要指定版本则mysql@v1.4.1
(2). topic.com/topic/go.mod:
module topic.com.cn
require (core v0.0.0// 新引入的第三方包github.com/go-sql-driver/mysql v1.4.1-0.20191022112324-6ea7374bc1b0 // indirect
)
replace core v0.0.0 => ../core
go 1.12
(3). 下载的文件位置:
$GOPATH\pkg\mod\github.com\go-sql-driver\mysql@v1.4.1-0.20191022112324-6ea7374bc1b0