Go 引入本地包完整教程
Go 引入本地包完整教程(Go Modules 模式)
Go 1.11+ 推荐使用 Go Modules 管理依赖,这是目前唯一标准、官方推荐的方式,绝对不要用 GOPATH 老模式。
我给你整理了最简单、最实用的本地包引入方法,直接照着做就能跑通。
一、核心前提
- 你的项目必须开启 Go Modules
- 项目根目录执行过:
go mod init 模块名(例如go mod init myproject)
二、标准项目结构(最常用)
假设你的项目结构如下:
myproject/ # 项目根目录(Go Modules 根目录)
├── go.mod # 自动生成的模块文件
├── main.go # 主程序(可执行文件)
└── utils/ # 本地包目录
└── string.go # 包内代码
三、步骤 1:创建模块
进入项目根目录执行:
go mod init myproject
go.mod 内容会自动生成:
module myproject
go 1.21 # 你的 Go 版本
四、步骤 2:写本地包代码
utils/string.go
// 包名:随便取,建议和目录名一致
package utils
// 函数名必须大写!!!才能被外部包访问
func Hello() string {
return "Hello from local package"
}
✅ 关键规则:
- 想被外部调用,函数、结构体、变量名都必须首字母大写(Go 的导出规则)。
五、步骤 3:在 main.go 引入本地包
直接用 模块名 + 包目录 引入:
package main
import (
"myproject/utils" // 本地包引入格式
)
func main() {
println(utils.Hello()) // 使用本地包函数
}
运行:
go run main.go
输出:
Hello from local package
六、多层级本地包(常用)
结构:
myproject/
├── go.mod
├── main.go
└── internal/
├── user/
│ └── user.go
└── db/
└── mysql.go
引入方式:
import (
"myproject/internal/user"
"myproject/internal/db"
)
七、跨项目引入本地包(不推荐,但能用)
如果你的包不在同一个项目里,可以用 replace 指令。
例如:
/myproject
/otherpkg
在 myproject/go.mod 里添加:
require otherpkg v0.0.0
replace otherpkg => ../otherpkg
然后代码里:
import "otherpkg"
八、最常见的 3 个错误
- 函数名小写 → 无法访问(必须大写)
- 包路径写错 → 找不到包(必须是
模块名/目录名) - 没开启 Go Modules → 各种奇怪报错(一定要用
go mod)
总结
- Go Modules 模式下,本地包 = 模块名 + 包目录
- 导出方法必须首字母大写
- 引入格式:
import "你的模块名/包目录" - 运行:
go run main.go即可自动识别

浙公网安备 33010602011771号