使用Go Modules引入本地包
Posted StaticAuto
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Go Modules引入本地包相关的知识,希望对你有一定的参考价值。
gomod
用来对包进行管理,在Gov1.13
默认开启。
module test
go 1.16
require (
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/go-ini/ini v1.63.2
github.com/gogf/gf v1.16.2
github.com/gogf/guuid v1.0.0
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/uuid v1.1.1
github.com/lib/pq v1.10.0
github.com/nats-io/nats-server/v2 v2.3.4 // indirect
github.com/nats-io/nats.go v1.11.1-0.20210623165838-4b75fc59ae30
google.golang.org/protobuf v1.27.1 // indirect
)
以上是一个mod例子,require中是依赖的管理,使用go mod tidy
一键下载依赖
所下载的依赖,都位于环境变量GOMODCACHE
目录下
可以使用go env
进行查看
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\\Users\\DELL\\AppData\\Local\\go-build
set GOENV=C:\\Users\\DELL\\AppData\\Roaming\\go\\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\\Users\\DELL\\go\\pkg\\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\\Users\\DELL\\go
set GOPRIVATE=
set GOPROXY=https://goproxy.io
set GOROOT=C:\\Program Files\\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\\Program Files\\Go\\pkg\\tool\\windows_amd64
set GOVCS=
set GOVERSION=go1.16.2
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=D:\\CloudMIDIS\\private\\IotComm\\trunk\\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\\Users\\DELL\\AppData\\Local\\Temp\\go-build1251387855=/tmp/go-build -gno-record-gcc-switches
此时开始引入本地包的步骤,首先 新增一个依赖
require (
ddis v0.0.0
)
这里的ddis是自定义命名的,取决于想在代码里如何使用该包,当然,也可以在import处进行再命名,注意:ddis包并不是实际存在的,我们无法在上述的环境变量管理依赖的目录下找到该文件,所以版本号使用v0.0.0
即可
重点来了:我们将ddis指向本地包所在的目录,可以是相对路径,也可以是绝对路径
replace (
ddis => D:\\GoShareLib\\trunk\\ddis
)
此处是不需要携带版本号的,完成上述操作之后,我们就可以直接在代码中调用本地包了
import (
"ddis"
)
注意:本地包必须是完整的,包内也必须有自己的go.mod文件,对于import引入包后执行的操作,本文不在赘述,可参考Go初始化顺序
以上是关于使用Go Modules引入本地包的主要内容,如果未能解决你的问题,请参考以下文章