go引入自建包名报错:package XXX is not in std解决办法

 更新时间:2023年12月06日 08:35:41   作者:子非花  
这篇文章主要给大家介绍了go引入自建包名报错:package XXX is not in std的解决办法,这是在写测试引入包名的时候遇到的错误提示,文中将解决办法介绍的非常详细,需要的朋友可以参考下

在写一个测试引入包名的测试案列中出现了下面的错误

D:\goworkspace\src\go_code\project_01\main>go run main.go
main.go:5:2: package go_code/project_01/calutils is not in std (G:\go_env\src\go_code\project_01\calutils)
main.go:6:2: package go_code/project_01/dbutils is not in std (G:\go_env\src\go_code\project_01\dbutils)

这个错误消息表明Go代码尝试导入一个位于项目目录之外的包,并且Go无法找到这个包。首先看了我的包名对应的路径是没有问题的。 

 排除了路径错误原因,接下来检查配置环境变量

 环境变量GOPATH的值即项目路径下的根目录,下面对应的是我的项目路径

当我配置好了以后再次运行还是报上面的错误。这时候就要查看go的环境变量了,输入下面命令进行查看

D:\goworkspace\src\go_code\project_01\main>go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\wxq\AppData\Local\go-build
set GOENV=C:\Users\wxq\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\goworkspace\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\goworkspace
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=G:\go_env
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=G:\go_env\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.21.3
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=D:\goworkspace\src\go_code\project_01\main\go.mod
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\wxq\AppData\Local\Temp\go-build2653196118=/tmp/go-build -gno-record-gcc-switches

根据配置信息,问题出在Go Modules的开启或关闭上。

  1. 当你运行 go env -w GO111MODULE= 时,它将清除 GO111MODULE 环境变量的设置,将其重置为空字符串。这将导致Go工具认为你的项目不使用Go Modules,因此它会尝试在GOPATH中查找包,但无法找到你的项目中的非标准库包。
  2. 当你运行 go env -w GO111MODULE=off 时,它将显式地将 GO111MODULE 设置为 "off",这意味着你禁用了Go Modules,并且Go工具会尝试在GOPATH中查找包。

 修改 GO111MODULE 

go env -w GO111MODULE=off

 这个时候一个包下的文件引入其他包名路径找不到的问题就解决了!

D:\goworkspace\src\go_code\project_01\main>go run main.go
测试
cal 函数执行了!
函数GetConnect执行了!

总结

到此这篇关于go引入自建包名报错:package XXX is not in std解决的文章就介绍到这了,更多相关go package XXX is not in std内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 一文了解Go语言中编码规范的使用

    一文了解Go语言中编码规范的使用

    这篇文章主要介绍了一文了解Go语言中编码规范的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • golang实现nacos获取配置和服务注册-支持集群详解

    golang实现nacos获取配置和服务注册-支持集群详解

    文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户端支持集群配置,文章还讨论了如何将Nacos获取到的配置与项目中的Viper无缝对接,以便进行Viper的正常操作
    2025-11-11
  • Golang字符串常用函数的使用

    Golang字符串常用函数的使用

    Golang提供了许多内置的字符串函数,这些函数可在处理字符串数据时帮助执行一些操作,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • golang struct, map, json之间的相互转换

    golang struct, map, json之间的相互转换

    本文用于记录我在 golang 学习阶段遇到的类型转换问题,针对的是 json 、map、struct 之间相互转换的问题,感兴趣的可以了解一下
    2021-06-06
  • golang之数据校验的实现代码示例

    golang之数据校验的实现代码示例

    这篇文章主要介绍了golang之数据校检的实现代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 初学Go必备的vscode插件及最常用快捷键和代码自动补全

    初学Go必备的vscode插件及最常用快捷键和代码自动补全

    这篇文章主要给大家介绍了关于初学vscode写Go必备的vscode插件及最常用快捷键和代码自动补全的相关资料,由于vscode是开源免费的,而且开发支持vscode的插件相对比较容易,更新速度也很快,需要的朋友可以参考下
    2023-07-07
  • 详解如何利用Golang泛型提高编码效率

    详解如何利用Golang泛型提高编码效率

    Golang的泛型已经出来有一段时间了,大家应该或多或少对它有所了解。虽然Golang的泛型在功能上确实比较简单,而且确实可能会增加代码的复杂度,过度使用可能还会降低代码可读性。本文就来介绍一下Golang泛型的相关知识吧
    2023-04-04
  • Go语言结合gorm实现读取PostgreSQL的json数据类型

    Go语言结合gorm实现读取PostgreSQL的json数据类型

    使用gorm读取PostgreSQL中json/jsonb类型数据是一个常见的操作,本文介绍几种方法,适用于几类不同的场景,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-10-10
  • Go 函数中获取调用者的函数名和文件名及行号

    Go 函数中获取调用者的函数名和文件名及行号

    这篇文章主要介绍了Go 函数中获取调用者的函数名和文件名及行号,文章围主题详细内容展开相关介绍,感兴趣的小伙伴可以参考一下
    2022-05-05
  • golang中http请求的context传递到异步任务的坑及解决

    golang中http请求的context传递到异步任务的坑及解决

    这篇文章主要介绍了golang中http请求的context传递到异步任务的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03

最新评论