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

第十五章: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.kler.cn/a/580750.html

相关文章:

  • 垂起固定翼+多旋翼+自组网:无人机中低空一体化组网技术详解
  • MySQL和Hive SQL 时间处理常用函数汇总
  • Qt C++ 实际开发中宏编译的运用
  • Unity插件-Mirror使用方法(九)组件介绍(Network Start Position)
  • Manus VR手套深度解析:重新定义人机交互的未来
  • nginx作为web服务应用
  • redis连接服务
  • git worktree的使用
  • Linux基本操作指令3
  • spring ai 调用本地部署的deepseek实现简单的问答功能
  • Linux原生异步IO原理与实现(Native AIO)
  • 【深度学习】参数管理
  • CI/CD—Jenkins实现自动构建Docker镜像运行Java程序
  • 初识Spring Batch:开启批处理的高效之旅
  • 使用阿里云操作系统控制台排查内存溢出
  • LLM应用开发(六)-联动带UI聊天机器人
  • Golang学习笔记_44——命令模式
  • Vue3 模板引用:打破数据驱动的次元壁(附高阶玩法)
  • Xss漏洞问题
  • SpringBoot + ResponseBodyEmitter 实时异步流式推送