Golang学习之路 连载一 Windows使用go mod命令及Goland配置
发布时间: 2020-06-13 更新时间: 2023-06-06
Golang Golang,GoMod,Goland 4.30 K 3 分钟 1093
Golang学习之路 连载一 Windows使用go mod命令及Goland配置
tips:
- 本文使用的golang版本
go1.12.6
- shell使用Windows Terminal
一、安装Golang
二、Golang项目目录结构
- 使用GOPATH项目目录配置
__ |_ bin # 编译后生成的可执行文件 |_ pkg # 编译后生成的文件 |_ src # 代码文件夹 |_ tets_go_mod
- 使用go mod管理目录配置
__ |_ tets_go_mod # 存放源代码
三、go mod
命令解释
命令 | 含义 |
---|---|
go mod download |
下载依赖的module到本地cache |
go mod edit |
编辑go.mod文件 |
go mod graph |
打印模块依赖图 |
go mod init |
当前文件夹下初始化一个新的module, 创建go.mod文件 |
go mod vendor |
将依赖复制到vendor下 |
go mod tidy |
增加丢失的module,去掉未用的module |
go mod verify |
校验依赖 |
go mod why |
解释为什么需要依赖 |
四、go mod
命令初始化一个项目
-
新建项目目录
mkdir test_go_mod
并进入到项目目录cd test_go_mod
-
开启
module
功能,执行命令set GO111MODULE=on
-
初始化项目
module
,执行命令go mod init test_go_mod
tets_go_mod # 代码文件夹 |_ go.mod
-
新建go文件
main.go
// main.go package main import "fmt" func main() { fmt.Println("test_go_mod") }
文件夹结构
__ |_ tets_go_mod # 代码文件夹 |_ go.mod |_ main.go
-
运行
go run main.go
,控制台输出test_go_mod
-
下载依赖,本文使用gin演示,
go get -u github.com/gin-gonic/gin
,修改main.go
内容。package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) _ = r.Run() // listen and serve on 0.0.0.0:8080 }
文件夹结构
__ |_ tets_go_mod # 代码文件夹 |_ go.mod |_ go.sum |_ main.go
-
执行
go run main.go
- 报错
build command-line-arguments: cannot load github.com/gin-gonic/gin: open xxx: The system cannot find the path specified
- 需要先执行
go mod vendor
,将依赖复制到vendor下 - 执行
go run main.go
,访问http://localhost:8080/ping
,返回{"message":"pong"}
- 报错
五、使用代理,解决某些包被墙
上述第六步下载包的时候,可能会出现某些依赖包无法下载的情况,被墙了。因此,网上主要有两种解决方法,一个是去github克隆下载包到指定的位置,另外一直就是使用代理。本文使用代理解决包无法下载的问题,具体解决方法如下:
golang
的版本要大于等于1.11
- 使用
https://goproxy.io/
代理golang包下载。 - 下载包之前开启
set GO111MODULE=on
,设置代理set GOPROXY=https://goproxy.io
- 下载包即可,如果还是不行,建议重新安装最新版本的
golang
或者使用克隆的库的方法
六、完整流程及Goland配置
-
完整流程
- 新建项目目录并进入打开shell
set GO111MODULE=on
set GOPROXY=https://goproxy.io
go mod init test_go_mod
go get -u github.com/gin-gonic/gin
- 编写
main.go
文件package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) _ = r.Run() // listen and serve on 0.0.0.0:8080 }
go mod vendor
go run main.go
-
Goland配置
- 找到 菜单栏 -> File-> Settings -> Go -> Go Modules(vgo) 选项
- 打开 Enable Go Modules(vgo) integration
- 打开 Vendoring mode
- 最后点击 apply 即可
总结
- 解决golang某些包无法下载问题
- Goland启用go module配置

