Golang中go run命令不搜索$GOPATH的解决方法
Golang中go run命令不搜索$GOPATH的解决方法 我的 Go 系统突然停止在 $GOPATH 中搜索本地包。
我可能遗漏了一些显而易见的东西,但我就是没看出来。
附上截图

显示问题的最小化代码截图。我想下一步是重新加载GO。

更多关于Golang中go run命令不搜索$GOPATH的解决方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
问题是由我工作目录中出现的一个 go.mod 文件引起的。
当我编译时,另一个文件 go.sum 也出现了。
我删除了 go.mod 和 go.sum 文件,问题就解决了。
我截取了 go.mod 的屏幕截图;也许有人会认出它。

从 Go 1.11 开始,Go 模块(Go Modules)成为默认的依赖管理方式,go run 命令不再自动搜索 $GOPATH。如果你仍然需要让 go run 在 $GOPATH 中查找包,可以临时禁用 Go 模块功能。
解决方法:
-
设置环境变量
GO111MODULE=off: 在运行go run前,将GO111MODULE环境变量设置为off,这会强制 Go 工具链使用$GOPATH模式。GO111MODULE=off go run main.go -
永久禁用 Go 模块(不推荐): 如果你希望在整个会话中禁用 Go 模块,可以设置环境变量:
export GO111MODULE=off之后所有
go命令都会使用$GOPATH模式。
示例:
假设你的项目结构如下(位于 $GOPATH/src/myproject):
$GOPATH/src/myproject/
├── main.go
└── mypackage/
└── mypackage.go
mypackage/mypackage.go:
package mypackage
import "fmt"
func Hello() {
fmt.Println("Hello from mypackage")
}
main.go:
package main
import "myproject/mypackage"
func main() {
mypackage.Hello()
}
运行命令:
GO111MODULE=off go run main.go
输出:
Hello from mypackage
注意:
- 如果你的项目已经使用了 Go 模块(即存在
go.mod文件),建议迁移到模块管理,而不是依赖$GOPATH。 - 要启用 Go 模块,可以在项目根目录运行
go mod init <module-name>。
如果你需要进一步帮助,请提供你的项目结构或 go.mod 文件内容。

