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.go 2: undefined: TestSet
2: undefined: TestSet
- 尝试
-> % go run .
get新包,vscode引入
go get gopkg.in/fatih/set.v0
- 引入
import “gopkg.in/fatih/set.v0”
- 直接编译
-> % go run .
mytest.go 2: no required module provides package gopkg.in/fatih/set.v0; to add it:
2: 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 协议》,转载必须注明作者和本文链接
 
           wunderbar 的个人博客
 wunderbar 的个人博客
         
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: