Golang本地包开发指南
Golang本地包开发指南 你好,
我是Go语言的新手,正在尝试开发自己的库。我可以成功地将代码推送到Github并在我的项目中使用这些包。
package main
import "github.com/fredericdepuydt/go-libraries/echo"
func main() {
echo.Error("An error message")
echo.Warning("A warning")
echo.Comment("Comment")
}
我希望能够进一步开发这个库,而不是在测试前将每一行代码都推送到Github。 目前这不可能实现,因为我本地的仓库被忽略了,总是拉取并使用远程git的最新版本。
我尝试添加了以下文件夹结构:
src
github.com
fredericdepuydt
go-libraries
echo
echo.go
color
color.go
到GOPATH和GOROOT中,但在每次构建或运行时,编译器仍然试图从在线仓库获取所有内容。
我使用VScode和Go扩展(由Google提供)进行开发。
如何强制Go使用我的本地仓库?
此致, Frederic Depuydt
更多关于Golang本地包开发指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
您似乎没有使用 Go 模块。强烈建议您这样做。
使用模块时,您可以使用 replace 指令指向库的本地副本。
更多关于Golang本地包开发指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go模块中,可以通过replace指令来使用本地包进行开发。以下是具体步骤:
1. 初始化Go模块
在你的库项目根目录中:
cd /path/to/your/local/go-libraries
go mod init github.com/fredericdepuydt/go-libraries
2. 在使用库的项目中添加replace指令
在你的主项目go.mod文件中添加:
module your-project-name
go 1.21
require github.com/fredericdepuydt/go-libraries v0.0.0
replace github.com/fredericdepuydt/go-libraries => /path/to/your/local/go-libraries
3. 或者使用相对路径(推荐)
module your-project-name
go 1.21
require github.com/fredericdepuydt/go-libraries v0.0.0
replace github.com/fredericdepuydt/go-libraries => ../go-libraries
4. 完整示例
项目结构:
your-project/
├── go.mod
├── go.sum
└── main.go
go-libraries/
├── go.mod
├── echo/
│ └── echo.go
└── color/
└── color.go
your-project/go.mod:
module myapp
go 1.21
require github.com/fredericdepuydt/go-libraries v0.0.0
replace github.com/fredericdepuydt/go-libraries => ../go-libraries
your-project/main.go:
package main
import "github.com/fredericdepuydt/go-libraries/echo"
func main() {
echo.Error("An error message")
echo.Warning("A warning")
echo.Comment("Comment")
}
5. 使用go work(Go 1.18+)
对于更复杂的开发工作流,可以使用Go Workspace:
# 在项目根目录创建workspace
go work init your-project go-libraries
# 生成的go.work文件
go 1.21
use (
./your-project
./go-libraries
)
这样配置后,Go工具链将优先使用本地包而不是远程仓库,便于你进行本地开发和测试。

