使用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引入本地包的主要内容,如果未能解决你的问题,请参考以下文章

使用Go Modules引入本地包

Go go.mod入门

Go go.mod入门

依赖管理系统 go modules

Golanggo modules 学习

golang包管理解决之道——go modules初探