Go语言import本地包的几种方式

Keywords: #技术 #Golang
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 中引入 lib1lib2 则需要编写:

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.modgo.sum 文件,并且存放在根目录中。除非一个项目很大,有许多大模块,则可以为每个大模块分配一个 go.mod,前提是这些模块之间没有关联,即不需要相互调用。

引入不同项目中的包(不常用)

目录结构如下所示:

├─lib1
│   go.mod
│   lib1.go
└─lib2
    go.mod
    lib2.go
  • lib1.go 中有 package lib1
  • lib2.go 中有 package lib2
  • lib1 中的 go.modmodule lib1demo
  • lib2 中的 go.modmodule lib2demo

lib1.go 中引入 lib2 则需要在 go.mod 中编写:

module lib1demo

go 1.23.2

require lib2 v0.0.0
replace lib2 => ../lib2

也可以将相对路径换为绝对路径,如果后续需要将两个项目一起打包使用,则推荐使用相对路径

import(
    "lib2"
)