Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:go:模块与包

模块与包

默认是使用Github分享代码,但是也可以自己搭建服务器,参照自行分发Go代码


示例代码(注释已经尽量写的详细了,好好看):

创建一个mod

go mod init <url> # 这里的url可以写正式的可以访问的url,如果是在本地开发的,或者不需要被引用也可以随便写

获取一个mod

go get <url>

从本地安装mod

如果需要在项目中引入一个第三方的mod,可以将代码下载到本地,然后使用本地导入的方式
这里我们就不需要使用go get了,而是直接修改go.mod,类似以下的写法

require (
    github.com/someone/othermodule v0.0.0
)

replace github.com/someone/othermodule => ../somewhere/othermodule

# 记得刷新
go mod tidy

需要注意的是:

  1. 在代码中使用仍然是import github.com/someone/othermodule
  2. 版本控制不起作用(所以我们随便写了v0.0.0),本地代码是什么样就是什么样,即使本地代码是一个Git repo并且有版本Tag,也不会被处理,如果需要某个特定版本,手动checkout
  3. 可以看出来,原本的url和tag(github.com/someone/othermodule v0.0.0)基本都可以乱写,但是为了把replace去掉之后也可以用,还是要按照规范来写

init函数

init() 是 Go 保留的一个自动执行函数,每个包(package)都可以有自己的 init(),它的主要用途是:在包被导入时自动运行,用来做初始化操作,比如注册驱动、设置默认值、加载配置等。

匿名导入

// 导入这个包,但不直接使用它的任何函数或变量,仅执行它的 init() 函数
import _ "github.com/go-sql-driver/mysql"

外链资料

  1. Go Modules: 包管理终结者 https://simi.studio/go-modules/
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/go/模块与包.txt · Last modified: 2025/07/01 06:44 by zhonghui