关于go mod 的使用和goland 配置 go mod

本文详细介绍Go Modules的使用方法,包括配置环境变量GO111MODULE,掌握gomod命令如init、download、tidy等,以及在Goland中启用Go Modules的步骤。适合初学者快速上手。

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

一、关于go modules

  • 1.1 go modules 是go1.11 新加的特性
    现在已有go 1.13.4 了本人用了就是最新版的
  • 1.2关于modules 官方定义
模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
  • 1.3 使用modules 的配置
    • 配置GO111MODULE
      GO111MODULE 有三个值 off , on,auto
GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH/src目录下查找。 (pkg 包都存放在 $GOPATH/pkg 下)
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。(pkg 包都存放在 $GOPATH/pkg 下)
  • 1.4 本人配置
    export GO111MODULE=auto
因为以前没有使用 ,未来兼容以前的项目,暂设成auto

二、go mod 的一些命令

命令说明
downloaddownload modules to local cache(下载依赖包 重要)
editedit go.mod from tools or scripts(编辑go.mod
graphprint module requirement graph (打印模块依赖图)
initinitialize new module in current directory(在当前目录初始化mod 重要)
tidyadd missing and remove unused modules(拉取缺少的模块,移除不用的模块 重要)
vendormake vendored copy of dependencies(将依赖复制到vendor下)
verifyverify dependencies have expected content (验证依赖是否正确)
whyexplain why packages or modules are needed(解释为什么需要依赖)

三、如何使用 go mod

  • 3.1 简单使用
mkdir hello
cd hello 
go mod init hello 
# 此时会出现一个hello下会出现一个 go.mod 目录
# 需要下载 所有第三方包时 go mod download
# 下载第三包可以直接使用 go get need_pkg
# 下载好的依赖 和 版本 会加入到 go.mod 里面,
# 下载好的第三包 会放在到$GOPATH/pkg/mod 中
# 没有设置GOPATH的话 下载好的第三方包会放在~/go/pkg/mod
# 如果你想放在当前目前可以执行如下命令
go mod vendor    
# 此时你的包就会出现在vendor下了,意思是将依赖包放在vendor中
  • 3.2 关于依赖升级
go list -m -u all 来检查可以升级的package
go get -u  升级所有依赖
go get -u need-pack 升级指定的依赖  
  • 3.3 关于依赖打包
go build  -ldflags="-s -w" -o app ./main.go
# -ldflags="-s -w" 压缩程序
  • 3.4 github 拉取 他人含有go.mod的项目时,下载所有第三方包
go mod download
  • 3.5 关于如何使用自定义包
hello
    |--conf
        |-conf.go
    |-main.go
    |-go.mod
如何导入conf 包呢?
先查看go.mod 中的module 后的定义的module_name
在导入时  直接使用module_name/conf   即可

先查看go.mod中的module_name
module_name/pkc

四、goland的配置

goland 升级到最新的,旧的goland 版本时不支持go mod,
在preferences -> go -> Go Modules(vgo) 
给Enable Go Modules (vgo) Integration 打勾勾就行

modules 设置

上图的那个圈起来的地方一定要勾上,
Enable Go Modules(vgo)   启用modules 模式

verdoring mode  会使用vendor 文件夹中的包(不用打勾,打勾意味着依赖包都使用vendor 目录里面的.)
### 解决GolandGo.mod文件缺失的问题 在Goland中,如果遇到Go.mod文件缺失的问题,可以通过以下方法生成或解决: 1. **创建一个新的项目并初始化Go.mod文件** 在目标目录下打开命令行,执行以下命令以初始化Go模块: ```bash go mod init <module-name> ``` 例如,如果项目的模块名称为`example.com/my-project`,可以运行: ```bash go mod init example.com/my-project ``` 这将在当前目录下生成一个`go.mod`文件[^1]。 2. **使用Goland内置功能初始化Go模块** 在Goland中打开项目后,如果检测到缺少`go.mod`文件,IDE会提示是否初始化模块。点击提示中的“Initialize Go Modules”按钮即可自动生成`go.mod`文件[^3]。 3. **手动添加依赖并整理模块** 如果项目中存在未明确版本的依赖包,生成的`go.mod`文件可能不完整。此时可以运行以下命令来自动下载依赖并更新`go.mod``go.sum`文件: ```bash go mod tidy ``` 该命令会移除未使用的依赖,并确保所有依赖都具有正确的版本号。 4. **检查环境变量配置** 确保环境变量`GO111MODULE`已正确设置为`on`,以便启用Go模块支持。可以通过以下命令检查当前配置: ```bash go env GO111MODULE ``` 如果返回值为`off`,则需要将其设置为`on`或`auto`。例如,在Linux或macOS系统中,可以通过以下命令设置: ```bash export GO111MODULE=on ``` 在Windows系统中,可以通过以下命令设置: ```cmd set GO111MODULE=on ``` 此外,建议设置`GOPROXY`以加速依赖包的下载。例如: ```bash export GOPROXY=https://proxy.golang.org,direct ``` 或者使用国内代理: ```bash export GOPROXY=https://goproxy.cn,direct ```[^2]。 5. **重新加载项目** 在Goland中,完成上述步骤后,右键单击项目根目录,选择“Reload All Go Packages”以重新加载依赖项。这将确保IDE正确识别新生成的`go.mod`文件及其依赖关系[^4]。 ```python # 示例代码:验证Go模块初始化是否成功 package main import ( "fmt" ) func main() { fmt.Println("Go.mod file initialized successfully!") } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值