当前位置: 首页 > news >正文

第十五章:go package 包的管理

import f "fmt"   // 注意 这里 f  是包的别名

init初始化函数

在每一个Go源文件中,都可以定义任意个如下格式的特殊函数:

func init(){
  // ...
}

  • package:声明包的关键字

  • packagename:包名,可以不与文件夹的名称一致,不能包含 - 符号,最好与其实现的功能相对应。

包的 匿名 引入 用 -

如果引入一个包的时候为其设置了一个特殊_作为包名,那么这个包的引入方式就称为匿名引入。一个包被匿名引入的目的主要是为了加载这个包,从而使得这个包中的资源得以初始化。 被匿名引入的包中的init函数将被执行并且仅执行一遍。

import _ "github.com/go-sql-driver/mysql"

匿名引入的包与其他方式导入的包一样都会被编译到可执行文件中。

需要注意的是,Go语言中不允许引入包却不在代码中使用这个包的内容,如果引入了未使用的包则会触发编译错误。

go module相关命令

命令介绍
go mod init初始化项目依赖,生成go.mod文件
go mod download根据go.mod文件下载依赖
go mod tidy比对项目文件中引入的依赖与go.mod进行比对
go mod graph输出依赖关系图
go mod edit编辑go.mod文件
go mod vendor将项目的所有依赖导出至vendor目录
go mod verify检验一个依赖包是否被篡改过
go mod why解释为什么需要某个依赖

Go语言在 go module 的过渡阶段提供了 GO111MODULE 这个环境变量来作为是否启用 go module 功能的开关,考虑到 Go1.16 之后 go module 已经默认开启,所以本书不再介绍该配置,对于刚接触Go语言的读者而言完全没有必要了解这个历史包袱。

相关文章:

  • 跨域问题。
  • 每日一练之链表的回文结构
  • LLaMA-Factory训练DeepSeek大模型+本地部署
  • Fedora41安装MySQL8.4.4
  • java每日精进 3.11 【多租户】
  • [Lc10_hash] 总结 | 两数之和 | 字符重排 | 存在重复元素 i ii | 字母异位词分组
  • 鸿蒙app开发中实现 底部抽屉效果动效
  • 修改secure-file-priv参数-mysql5.7.26限制不允许导入或导出的解决方法
  • 阿里云操作系统控制台实战评测:提升云资源管理与监控效率
  • MobileBERT: 一种适用于资源有限设备的紧凑型任务无关BERT
  • Ubuntu系统部署.NET 8网站项目
  • 部署vue+django项目(初版)
  • C语言:6.20字符型数据练习题
  • 基于Python 3.7、使用PyTorch构建的回归定位框架的详细实现
  • 线程相关作业
  • CI/CD—Jenkins配置Maven+GitLab自动构建jar包
  • 华为DSVPN
  • Manus AI:国产AI Agent的破局与隐忧
  • MyBatis-Plus 分页查询接口返回值问题剖析
  • got表hook和inlinehook的优缺?(面试题)
  • 前瞻|美联储明晨“按兵不动”几无悬念:关税战阴霾下,会否释放降息信号
  • 农行原首席专家兼浙江省分行原行长冯建龙主动投案,正接受审查调查
  • 长三角多地重启游轮跨市游,“恢复苏杭夜航船”呼声又起
  • 詹丹|高考语文阅读题设计和答案拟制的一些缺憾
  • 央行宣布优化两项支持资本市场的货币政策工具
  • 创历史同期新高!“五一”假期全国快递揽投超48亿件