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@master
  go: finding github.com/go-sql-driver/mysql master
  go: downloading github.com/go-sql-driver/mysql v1.4.1-0.20191022112324-6ea7374bc1b0
  go: 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

你可能感兴趣的:(golang,开发语言,后端)