go module本地包导入全过程
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
整体流程

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
golang中的io.ReadCloser与ioutil.NopCloser使用
这篇文章主要介绍了golang中的io.ReadCloser与ioutil.NopCloser使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-03-03
Go strconv包实现字符串和基本数据类型转换的实例详解
在Go语言(Golang)的编程实践中,strconv包是一个非常重要的标准库,它提供了在基本数据类型(如整型、浮点型、布尔型)和字符串之间的转换功能,本文给大家介绍了关于Go语言字符串转换strconv,需要的朋友可以参考下2024-09-09


最新评论