Go 引入本地包完整教程

Go 引入本地包完整教程(Go Modules 模式)

Go 1.11+ 推荐使用 Go Modules 管理依赖,这是目前唯一标准、官方推荐的方式,绝对不要用 GOPATH 老模式

我给你整理了最简单、最实用的本地包引入方法,直接照着做就能跑通。


一、核心前提

  1. 你的项目必须开启 Go Modules
  2. 项目根目录执行过: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 个错误

  1. 函数名小写 → 无法访问(必须大写)
  2. 包路径写错 → 找不到包(必须是 模块名/目录名
  3. 没开启 Go Modules → 各种奇怪报错(一定要用 go mod

总结

  • Go Modules 模式下,本地包 = 模块名 + 包目录
  • 导出方法必须首字母大写
  • 引入格式:import "你的模块名/包目录"
  • 运行:go run main.go 即可自动识别
posted @ 2026-04-11 11:59  卓能文  阅读(4)  评论(0)    收藏  举报