Golang中无法使用自定义包的问题如何解决
Golang中无法使用自定义包的问题如何解决 嗨,我被一个非常基础的问题卡住了。这是个新手问题。 我只想在不使用外部仓库的情况下创建一个自定义包。
这是我的文件夹结构,位于 ~/go/src 文件夹之外。
go-packages/
+utility
-helper.go
-main.go
package main
import (
"fmt"
"go-packages/utility"
)
func main() {
fmt.Println(utility.Testme())
}
以及 helper.go
package utility
func Testme() int {
return 1
}
运行 go run 总是产生错误
main.go:5:2: package go-packages/utility is not in GOROOT (/usr/local/go/src/go-packages/utility)
我尝试添加 mod 文件:go mod init example dot com/go-packages/,但没有帮助。
我哪里做错了?
我参考了很多资料,尝试了其中的例子。 blog.golang.org/using-go-modules 以及许多其他资料。
更多关于Golang中无法使用自定义包的问题如何解决的实战教程也可以访问 https://www.itying.com/category-94-b0.html
嗨 @skillian,谢谢你的提示!
更多关于Golang中无法使用自定义包的问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
@skillian 你拯救了我的第二天!非常感谢!
@anthonys 如果是这种情况,请使用 import "example.com/go-packages/utility"
实际上我在 go-packages 文件夹里有这个 go.mod
module example.com/go-packages
go 1.14
你好,@anthonys,你能编辑一下你的帖子然后尝试再次保存吗?我不太能确定文件夹结构,因为我觉得你的缩进可能丢失了。你能用反引号(`)把它包起来吗,像这样:
code
@anthonys 看看这篇帖子:使用Go模块组织本地代码包
我认为你需要在 go-packages 文件夹中创建一个 go.mod 文件,将模块名称定义为 "go-packages",然后你的 import 语句应该就能正常工作了。
这是一个常见的Go模块配置问题。你的项目结构是正确的,但需要正确设置模块。
在你的 go-packages 目录中,应该这样配置:
- 初始化模块(在
go-packages目录中):
cd go-packages
go mod init go-packages
- 更新你的
main.go:
package main
import (
"fmt"
"go-packages/utility"
)
func main() {
fmt.Println(utility.Testme())
}
- 确保
helper.go正确:
package utility
func Testme() int {
return 1
}
- 运行程序:
go run main.go
如果仍然有问题,检查你的 go.mod 文件内容应该是:
module go-packages
go 1.xx
关键点是:
- 模块名称(
go mod init的参数)应该与导入路径匹配 - 所有文件都在模块根目录下
- 不要将项目放在
GOPATH中,因为你在使用Go模块
如果问题仍然存在,可以尝试:
go mod tidy
go run main.go

