23年了,GOPATH和go.mod 还在冲突!

文章讲述了在Go环境下配置GOROOT和GOPATH时遇到的问题,以及如何通过使用`gomodinit`初始化模块来解决。关键点包括清空GOPATH,确保模块名与工程名一致,正确导入和使用外部包如`github.com/montanaflynn/stats`,并强调了包内导出函数需首字母大写的规定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在 新配了 go环境 设置了GOROOT,GOPATH ,发现引用别的包会出问题。

一直会报 package XX not in GOROOT (xxxx)

我的目录:

我的开发目录: /home/fate/go_projects/

老样子,下面有  /home/fate/go_projects/bin,  /home/fate/go_projects/pkg,

/home/fate/go_projects/src 三个目录

其中src下面:

现要开发review_1 这个工程

现记录下:

1)GOPATH 和  go mod init xx 是冲突的!

老老实实置空GOPATH 

$export GOPATH=

2)在 /home/fate/go_projects/src/review_1 下,也就是我目前的工程之一

 运行 $go mod init review_1

之后才会有go.mod 生成

3)在这个工程中我需要"github.com/montanaflynn/stats"这个库

然后:

go get github.com/montanaflynn/stats

go install github.com/montanaflynn/stats

4) main.go 中引入dbutils 以及 github.com/montanaflynn/stats 包:

使用stats:

调用 dbutils.GetConn()

就不报错了。。

关键解决:

  1. 废弃GOPATH 的配置;

  1. 要在src/下的对应文件夹(src/review_1)中 进行 go mod init review_1 ,这两名最好一样;

  1. 调用时,最后一层包名必须使用,即:dbutils.GetConn() 而不是直接 GetConn()

此外,包中供外部引用的函数必须首字母大写。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenxin0215

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值