Go语言import本地包的几种方式
Release Date: 2025-03-05
Table of Contents
对于刚接触 Golang 的新手来说,面对 Go 语言的 import 规则可能会摸不着头脑,尤其是 import 本地的代码。并且网络上相关的教程讲解的不是很清晰,因此在这里我总结几种常见的 import 本地包的方式。
引入同一项目中的包 (最常用)
main 引入 lib
目录结构如下所示:
│main.go
│go.mod
├─lib1
│ lib1.go
└─lib2
lib2.go
main.go
中有package main
go.mod
中有module testdemo
lib1.go
中有package lib1
lib2.go
中有package lib2
在 main.go
中引入 lib1
和 lib2
则需要编写:
package main
import (
"testdemo/lib1"
"testdemo/lib2"
)
lib1 引入 lib2
目录结构如下所示:
│main.go
│go.mod
├─lib1
│ lib1.go
└─lib2
lib2.go
main.go
中有package main
go.mod
中有module testdemo
lib1.go
中有package lib1
lib2.go
中有package lib2
在 lib1
中引入 lib2
则需要编写:
package lib1
import (
"testdemo/lib2"
)
在 lib2
中引入 lib1
则需要编写:
package lib2
import (
"testdemo/lib1"
)
总结
引入同一项目中的包时,引入的格式为:
import "模块名/包名"
- 模块名由
go.mod
中的module 模块名
决定。 - 包名由
package 包名
决定,一般与目录名保持一致。
在一个项目中,只能有一个
go.mod
和go.sum
文件,并且存放在根目录中。除非一个项目很大,有许多大模块,则可以为每个大模块分配一个go.mod
,前提是这些模块之间没有关联,即不需要相互调用。
引入不同项目中的包(不常用)
目录结构如下所示:
├─lib1
│ go.mod
│ lib1.go
└─lib2
go.mod
lib2.go
lib1.go
中有package lib1
lib2.go
中有package lib2
lib1
中的go.mod
有module lib1demo
lib2
中的go.mod
有module lib2demo
在 lib1.go
中引入 lib2
则需要在 go.mod
中编写:
module lib1demo
go 1.23.2
require lib2 v0.0.0
replace lib2 => ../lib2
也可以将相对路径换为绝对路径,如果后续需要将两个项目一起打包使用,则推荐使用相对路径。
import(
"lib2"
)