包与模块
Go 的包组织、可见性规则与模块系统深入 一、包(Package)基础 1.1 什么是包 // 每个 Go 文件都必须声明自己属于哪个包 package main // main 包是可执行程序的入口 // 同一目录下的所有 .go 文件必须属于同一个包 // 例外:_test.go 文件可以声明 _test 包(用于黑盒测试) 1.2 包的命名规则 // 包名:小写单词,不要下划线或驼峰 package mypackage // ✅ package my_package // ❌ package MyPackage // ❌ // 目录名 = 包名 // src/ // └── utils/ // 目录名 utils // ├── string.go // package utils // └── math.go // package utils 1.3 main 包的特殊性 // main 包 + main() 函数 = 可执行程序 package main import "fmt" func main() { fmt.Println("Hello!") } 二、导入(Import) 2.1 基本导入 import "fmt" // 标准库 import "github.com/gin-gonic/gin" // 第三方包 // 批量导入 import ( "fmt" "os" "strings" ) 2.2 导入别名 // 解决包名冲突 import ( "fmt" myfmt "github.com/other/fmt" // 别名 ) 2.3 点导入与下划线导入 // 点导入:将包的导出标识符引入当前命名空间 import . "fmt" Println("Hello") // 不需要 fmt.Println // ⚠️ 不推荐使用——降低代码可读性 // 下划线导入:只执行包的 init() 函数 import _ "github.com/go-sql-driver/mysql" // 注册 MySQL 驱动 // 不使用包中的任何标识符,只是让 init() 被调用 三、可见性规则(大小写) 3.1 导出规则 Go 没有 public/private 关键字,通过首字母大小写控制可见性: ...
豫公网安备41108202000982号