go module本地包导入全过程
作者:anjushi_
文章介绍了使用gom模块化管理工具进行本地包导入的方法,包括启用、配置Gom、创建工作目录、新建与文件、编写代码、运行与发布模块等等等、自动更新与同步等,通过具体流程演示了如何在本地使用与管理Gom模块化包导入与更新的过程om
go 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  # 永久开启 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 main
import (
"fmt"
)
func main(){
fmt.Println("This is main")
}


运行
go run main.go

本地module目录
切换目录,新建自己的包
cd .. mkdir mypkg go mod init mypkg

包内新建hello.go文件
package mypkg
import "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 main
import (
"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
整体流程

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
