我第一次接触Go语言的时候使用goland搭建项目遇到引用第三方包或者本地引用的时候总是报错,而不知道为什么?
使用GoPath有很多限制,不如需要制定GOPATH路径还需要src之类的。
而go.mod又不知道怎么使用,在网上找了好多而不知所以然。
实战配置
首先在Golang的官网:
https://golang.google.cn/点击下载
![](https://img-blog.csdnimg.cn/20200718151702761.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhcHB5Xzg1,size_16,color_FFFFFF,t_70)
选在合适的版本,我的是电脑是mac,所以选在第二个。
下载后直接双击,一直下一步即可。
验证安装是否完成:输入go version
![](https://img-blog.csdnimg.cn/20200718151702743.png)
修改环境变量(因为我安装了oh-my-zsh),输入vim ~/.zshrc。如果没有按照的可以输入vim ~/.bash_profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go_learning
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN:$GOROOT/bin
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
输入source ~/.zshrc,让配置生效。
之后输入go env查看配置是否正确
go mod 有以下命令:
命令
|
说明
|
download
|
download modules to local cache(下载依赖包)
|
edit
|
edit go.mod from tools or scripts(编辑go.mod)
|
graph
|
print module requirement graph (打印模块依赖图)
|
verify
|
initialize new module in current directory(在当前目录初始化mod)
|
tidy
|
add missing and remove unused modules(拉取缺少的模块,移除不用的模块)
|
vendor
|
make vendored copy of dependencies(将依赖复制到vendor下)
|
verify
|
verify dependencies have expected content (验证依赖是否正确)
|
why
|
explain why packages or modules are needed(解释为什么需要依赖)
|
比较常用的是
init,tidy,
edit。
初始化一个项目
在项目里面go mod init,如你的项目使gotest目录,那就cd gotest 在执行go mod init
module gotest
go 1.14
go.mod 提供了module, require、replace和exclude 四个命令
-
module 语句指定包的名字(路径)
-
require 语句指定的依赖项模块
-
replace 语句可以替换依赖项模块
-
exclude 语句可以忽略依赖项模块
如引入github中的goinaction包
import (
"log"
"sync"
"time"
"github.com/goinaction/code/chapter7/patterns/work"
)
在go.mod中就会出现
module gotest
go 1.14
require (
github.com/goinaction/code v0.0.0-20171020164608-49fc99e6affb
)
本地引入
import (
"log"
"os"
"time"
"gotest/chapter7/patterns/runner"
)
srctest是go.mod中的
module,随后写后面的路径就ok了。
在来看看goland怎么配置
![](https://img-blog.csdnimg.cn/20200718151702760.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhcHB5Xzg1,size_16,color_FFFFFF,t_70)
把这些都勾掉,因为我们不使用GOPATH路径了。
![](https://img-blog.csdnimg.cn/20200718151702755.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhcHB5Xzg1,size_16,color_FFFFFF,t_70)
在Go Modules中配置如下即可
![](https://img-blog.csdnimg.cn/20200718151702741.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhcHB5Xzg1,size_16,color_FFFFFF,t_70)
这样就可以运行了。