Go项目使用自定义的公共单元

(一)前言

和Java一样,Golang也无法直接引用项目以外的公共单元代码。
PS:当然Go更过分,要求代码得放在%GOPATH%/src中……

幸好后来有了go mod (go modules) (go 模块)
是Golang在1.11版本时加的特性。

我们需要做的就是:

  1. 将公共单元作为一个单独的模块。
  2. 其它项目用模块的方式引入这个jar包。

(二)制作公共单元(模块)

这步比较简单,可以从一个可执行的项目开始修改(还是这么懒)。
去掉main函数和相关单元,仅保留公共模块单元。

这个例子和普通的go mod程序没什么不同。
但是不像Java需要打包成Jar,这个模块并不需要编译(但得保证编译能过啊)成exe,保留源代码状态就OK。

go.mod例子如下,那堆require可以无视:

module my.pub.utils/my-public-utils

go 1.19

require (
	github.com/phachon/go-logger v0.0.0-20191215032019-86e4227f71ea
	golang.org/x/text v0.3.7
)

require (
	github.com/fatih/color v1.13.0 // indirect
	github.com/josharian/intern v1.0.0 // indirect
	github.com/mailru/easyjson v0.7.7 // indirect
	github.com/mattn/go-colorable v0.1.13 // indirect
	github.com/mattn/go-isatty v0.0.16 // indirect
	golang.org/x/sys v0.0.0-20220823224334-20c2bfdbfe24 // indirect
)

呃,如果你的Go项目并不是基于模块,那么……
go mod init生成go.mod文件吧。
这部分不在讨论中。

(三)项目使用自定义的公共单元

(3.1)修改go.mod

需要在项目的go.mod加入公共单元模块,并指定它的目录位置。
相对路径也可以。

module myid.ac.com

go 1.19

require my.pub.utils/my-public-utils v1.0.0

replace my.pub.utils/my-public-utils => ..\..\..\PublicGo\my-utils

require (
	github.com/fatih/color v1.13.0 // indirect
	github.com/josharian/intern v1.0.0 // indirect
	github.com/mailru/easyjson v0.7.7 // indirect
	github.com/mattn/go-colorable v0.1.13 // indirect
	github.com/mattn/go-isatty v0.0.16 // indirect
	github.com/phachon/go-logger v0.0.0-20191215032019-86e4227f71ea // indirect
	golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64 // indirect
	golang.org/x/text v0.3.7 // indirect
)

(3.2)源代码import

当然,
代码中需要引入才能用:

......
import (
	"bufio"
	"fmt"
	"io"
	"os"
	"path"
	"path/filepath"
	"runtime"
	"runtime/debug"
	"strconv"
	"strings"
	"sync"
	"time"

	unit1 "my.pub.utils/my-public-utils/part1"
	unit2 "my.pub.utils/my-public-utils/part2"
	Unit3 "my.pub.utils/my-public-utils/part3"
)
func main() {
	......
	unit1.function1(a,b,...)
	......
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值