Skip to content

结构

包是Go语言中的代码组织单元. 一个包由一个或者多个.go文件组成, 这些文件通常位于同一个目录下, 并且在包声名的时候使用相同的包名: package <name>.

Go语言中所有的import语句导入的都是包, 而不是模块.

警告

不能同时导入两个具有相同名称的包, 会导致名称冲突. 或者使用别名导入.

main函数

  • Go编译时的入口是main包的main函数
  • 可以有多个文件属于main包但是只能有一个main函数
  • 模块中有main包但是找不到main函数, 也会报错
  • 不能有任何的参数和返回值, 由Go自动调用
  • main函数只能用于main包中

init函数

  • init函数可以位于任意包中
  • init函数是用于程序执行前做包的初始化的函数
  • 每个包可以有多个init 函数
  • init函数不能被其他函数调用, 而是在main函数执行之前
  • 没有main函数的模块, 俗称"库"内的init函数会被执行
  • 不同包的init函数按照依赖关系决定执行顺序
  • 同一个包内的init函数的执行顺序按照所属文件名的字典顺序依次执行
  • 同一个包的同一个文件也可以有多个init, 按照定义顺序依次执行
  • 不能有任何的参数和返回值, 由Go自动调用

模块

Go模块是Go语言的依赖管理单元, 包含一个或多个包. 每个模块由go.mod文件定义.

在使用go get命令时, 下载的是整个模块, 意味着会下载包含在该模块中的所有包.

基于 MIT 许可发布