Go包管理
症状
包与包之间方法无法调用
go get …的包无法引用
环境
-> % lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
-> % go version
go version go1.18.1 linux/amd64
设置环境变量
export GO111MODULE=on
IDE: vscode
单个项目不同包之间方法的访问
确定需被访问的函数、方法或结构体等的开头字母大写,这是Go的访问控制
在各包中初始化go.mod
go mod init 取个包名字
生成go.mod文件如下
module m
go 1.18
VSCode打开多个项目
- 在根目录中初始化go.work,将子目录加上
go work init ./product1 ./product2
go.work如下
go 1.18
use (
./product1
./product2
)
- 多个项目目录
-> % tree
.
├── go.work
├── product1
│ ├── go.mod
│ ├── go.sum
│ ├── main.go
│ └── mytest.go
└── product2
├── go.mod
├── go.sum
├── channel.go
├── const.go
…
同包
-> % go run main.go
command-line-arguments
./main.go2: undefined: TestSet
- 尝试
-> % go run .
get新包,vscode引入
go get gopkg.in/fatih/set.v0
- 引入
import “gopkg.in/fatih/set.v0”
- 直接编译
-> % go run .
mytest.go2: no required module provides package gopkg.in/fatih/set.v0; to add it:
go get gopkg.in/fatih/set.v0
- 解决方法
-> % go mod tidy
go: finding module for package gopkg.in/fatih/set.v0
go: found gopkg.in/fatih/set.v0 in gopkg.in/fatih/set.v0 v0.2.1
等2s,可以发现IDE的红杠杠没了
可以发现go.mod及go.sum方法多了几行对gopath中的包的引入
本作品采用《CC 协议》,转载必须注明作者和本文链接