当前位置: 首页 > 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语言的读者而言完全没有必要了解这个历史包袱。

http://www.dtcms.com/a/60368.html

相关文章:

  • 跨域问题。
  • 每日一练之链表的回文结构
  • 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的优缺?(面试题)
  • 深度学习历程
  • 【从零开始学习计算机科学】计算机体系结构(二)指令级并行(ILP)
  • 面试之《技巧》
  • 云服务运维智能时代:阿里云操作系统控制台
  • ctf-WEB: 关于 GHCTF Message in a Bottle plus 与 Message in a Bottle 的非官方wp解法
  • 2025涡轮展技术论坛看点:整机研发-核心部件-材料工艺-运维服务
  • 算法精讲 | 树(二):BFS层序遍历の魔法——像水波纹一样扫描整棵树
  • ⚡ 回声谷即时通讯系统
  • 在Vue中如何高效管理组件状态?
  • C# BlockingCollection