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:110:2: undefined: TestSet

  • 尝试

-> % go run .

get新包,vscode引入

go get gopkg.in/fatih/set.v0

  • 引入

import “gopkg.in/fatih/set.v0”

  • 直接编译

-> % go run .
mytest.go:9: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 协议》,转载必须注明作者和本文链接
享受追踪思维漏洞的过程
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!