go module本地包导入
本文目录
- go module本地包导入
- 启用go mod
- 主项目工作目录
- 本地module目录
- 发布和使用模块
golang 1.11
之后加入了go mod
来替代GOPATH
官方文档参考:https://golang.google.cn/doc/tutorial/call-module-code
启用go mod
-
开启 Go modules
# 临时开启 Go modules 功能 export GO111MODULE=on ![请添加图片描述](https://img-blog.csdnimg.cn/direct/3cda800aae2041f98bef026bc274dba3.jpeg)# 永久开启 Go modules 功能 go env -w GO111MODULE=on# 设置 Go 的国内代理,方便下载第三方包 go env -w GOPROXY=https://goproxy.cn,direct
-
通过 go env
go env
主项目工作目录
-
创建一个工作目录
mkdir myapp
-
新建mod文件
cd myapp go mod init myapp
-
添加函数main.go
package mainimport ("fmt" )func main(){fmt.Println("This is main") }
-
运行
go run main.go
本地module目录
-
切换目录,新建自己的包
cd .. mkdir mypkg go mod init mypkg
-
包内新建hello.go文件
package mypkgimport "fmt"func SayHello()string{fmt.Println("hello,(print in mypkg)")return "success" }
发布和使用模块
当 main.go
尝试导入 mydemo.com/mypkg
模块时,Go
工具链会从本地的 ../mypkg
目录加载模块,而不是尝试从远程位置下载
-
指定包的本地路径
go mod edit -replace mydemo.com/mypkg=../mypkg
-
在main.go添加自己的包
package mainimport ("fmt"my "mydemo.com/mypkg" )func main(){fmt.Println("This is main")flag :=my.SayHello();fmt.Println(flag) }
-
更新和同步
go mod tidy
-
查看
go mod
,已经自动更新
-
运行
go run main.go
-
整体目录结构
└── twogo├── myapp│ ├── go.mod│ └── main.go└── mypkg├── go.mod└── hello.go
-
整体流程