一、物料
二、Go语言开发环境搭建
Windows下安装
- 安装Go开发包
- 下载地址
Go官网下载地址:https://golang.org/dl/
Go官方镜像站(推荐):https://golang.google.cn/dl/
- 新打开一个cmd -> go version查看版本。
Linux下安装
如果不是要在Linux平台敲go代码(开发)就不需要在Linux平台安装Go,我们开发机上写好的go代码只需要跨平台**编译**(详见文章末尾的跨平台编译)好之后就可以拷贝到Linux服务器上运行了,这也是go程序跨平台易部署的优势。
我们在版本选择页面选择并下载好go1.14.1.linux-amd64.tar.gz
文件:
wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz
将下载好的文件解压到/usr/local
目录下:
tar -zxvf go1.14.1.linux-amd64.tar.gz -C /usr/local # 解压
如果提示没有权限,加上sudo
以root用户的身份再运行。执行完就可以在/usr/local/
下看到go
目录了。
配置环境变量: Linux下有两个文件可以配置环境变量,其中/etc/profile
是对所有用户生效的;$HOME/.profile
是对当前用户生效的,根据自己的情况自行选择一个文件打开,添加如下两行代码,保存退出。
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
修改/etc/profile
后要重启生效,修改$HOME/.profile
后使用source命令加载$HOME/.profile
文件即可生效。 检查:
~ go version
go version go1.14.1 linux/amd64
Mac下安装
- 下载可执行文件版,直接点击下一步安装即可,默认会将go安装到
/usr/local/go
目录下。 - 上一步安装过程执行完毕后,可以打开终端窗口,输入
go version
命令,查看安装的Go版本。
Goland for Mac破解地址 。 或者https://www.waitsun.com/
goland安装更改默认shell
拉取的代码问题:
例如iris的热重启模块rizla不能正常工作,是因为没有使用go get,并没有在 bin目录 生成可执行文件,所以报不是内部或外部命令。
//编辑~/.bash_profile文件
$ vim ~/.bash_profile
// 按e进入编辑,i表示insert;esc > :wq!
//在~/.bash_profile文件中添加以下2条命令
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
//使配置生效
$ sorce ~/.bash_profile
三、配置GOPATH
新建目录 E:/Go
存放编写Go代码(即源代码)-如果有多个,就以分号分隔添加
为什么要三个文件夹?或者说开发时的目录结构是什么样的?
GOPATH之下主要包含三个⽬目录: bin、pkg、src。bin⽬目录主要存放可执⾏文件; pkg⽬目录存放编译好的库⽂文件, 主要是*.a⽂文件; src⽬目录下主要存放go的源文件
- 个人开发
- 团队开发
- 企业开发者
默认配置
GOROOT
和GOPATH
都是环境变量,其中GOROOT
是我们安装go开发包的路径,而从Go 1.8版本开始,Go开发包在安装完成后会为GOPATH
设置一个默认目录,参见下表。
GOPATH在不同操作系统平台上的默认值
平台 | GOPATH默认值 | 举例 |
---|---|---|
Windows | %USERPROFILE%/go | C:\Users\用户名\go |
Unix | $HOME/go | /home/用户名/go |
可以通过以下方法查看默认的GOPATH
目录:
默认情况下 GOROOT
下的bin目录及GOPATH
下的bin目录都已添加到环境变量 PATH
中了,不需要额外配置。
只需要记住更改的GOPATH路径,以后在这个目录下开发go项目。
具体配置
- 删除用户变量和系统变量默认的GOPATH和path内的bin路径(默认的)
- 在系统变量设置 GOPATH=E:/Go和GORROT=C:/Go 表示安装环境;在PATH内添加C:/Go/bin 和 %GOPATH%\bin【可能有多个GOPATH】
四、go env内的属性
4.1 GOPROXY
Go1.14版本之后,都推荐使用go mod
模式来管理依赖环境了,也不再强制我们把代码必须写在GOPATH
下面的src目录了,你可以在你电脑的任意位置编写go代码。(网上有些教程适用于1.11版本之前。)
默认GoPROXY配置是:GOPROXY=https://proxy.golang.org,direct
,由于国内访问不到[https://proxy.golang.org](https://proxy.golang.org)
,所以我们需要换一个PROXY,这里推荐使用[https://goproxy.io](https://goproxy.io)
或[https://goproxy.cn](https://goproxy.cn)
。
当你安装的GO的语言版本大于1.13的时候,那么就不用这么麻烦了,直接使用go env -w命令就行了
可以执行下面的命令修改GOPROXY:
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GO111MODULE=off
4.2 GO111MODULE
GO111MODULE有三个值:off, on和auto(默认值)。
- GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
- GO111MODULE=on,go命令行会使用Module机制,而一点也不会去GOPATH目录和Vendor下查找。
- GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
- 在GOPATH下的工程,不使用Module机制,不在GOPATH下的工程使用
- 当前目录在GOPATH/src之外且该目录包含go.mod文件
- 当前文件在包含go.mod文件的目录下面。
4.3 报错
# GOPATH entry is relative; must be absolute path: "%USERPROFILE%\\go".
- 用户环境变量中Path添加了错误的"%USERPROFILE%\\go"路径
- 或者是Path改用文本编辑去掉末尾分号并重启
# GO111MODULE=on,但是没有go.mod文件
go: cannot find main module; see 'go help modules'
# tools版本和golang版本不统一:重新安装Go语言开发工具包
compile: version "go1.14.4" does not match go tool version "go1.13"
go get github.com/golang/protobuf/protoc-gen-go@v1.3.2 # 安装第三方依赖报错
go: cannot use path@version syntax in GOPATH mode
# 解决:需要开启 GO111MODULE,默认是 auto
# go mod作为官方的依赖管理工具,类似于maven这种本地缓存库的管理方式,其主要是通过GOPATH/pkg/mod下的缓存包来对工程进行构建。
#####
总结: 获取第三方依赖时(下载到GOPATH/pkg中)
# go get -u -v 获取包
go get github.com/kataras/iris/v12@latest
# 先使用`go env -w GO111MODULE=on`下面打开GO111MODULE选项
# 使用完最好关闭,否则编译可能出错(不关闭走Module机制)
#####
五、编辑器
Go采用的是UTF-8编码的文本文件存放源代码,理论上使用任何一款文本编辑器都可以做Go语言开发,这里推荐使用VS Code
和Goland
。
由于Goland
是jetbrains出品的付费IDE,破解版不利于在公司使用。推荐使用VS Code
加插件 Go
做为go语言的开发工具。
安装Go语言开发工具包
在做Go语言开发的时候为我们提供诸如代码提示、代码自动补全等功能。
在此之前请先设置GOPROXY
,打开终端执行以下命令:
go env -w GOPROXY=https://goproxy.cn,direct
- 首先安装扩展go
- Windows平台按下
Ctrl+Shift+P
,Mac平台按Command+Shift+P
,这个时候VS Code界面会弹出一个输入框。
我们在这个输入框中输入>go:install
,下面会自动搜索相关命令,我们选择Go:Install/Update Tools
这个命令,按下图选中并会回车执行该命令(或者使用鼠标点击该命令):
若安装失败(国外资源),则下载网盘。复制到开发目录下的bin文件夹:
https://pan.baidu.com/s/1Evs8r7fkHbDSl9Qrxbm-ew 密码:vjx2。
代码格式化-配置代码片段快捷键
还是按Ctrl/Command+Shift+P
,按下图输入>snippets
,选择命令并执行
在弹出的窗口点击选择go
选项,配置go.json文件
大家可以简单看下上面的注释,介绍了主要用法:
“这里放个名字”:{
"prefix": "这个是快捷键",
"body": "这里是按快捷键插入的代码片段",
"description": "这里放提示信息的描述"
}
其中
$0
表示最终光标提留的位置。 举个例子,我这里创建了两个快捷方式,一个是输入pln
就会在编辑器中插入fmt.Println()
代码;输入plf
,就会插入fmt.Printf("")
代码。{
"println":{
"prefix": "pln",
"body":"fmt.Println($0)",
"description": "println"
},
"printf":{
"prefix": "plf",
"body": "fmt.Printf(\"$0\")",
"description": "printf"
}
}
把上面的代码,按下图方式粘贴到配置文件中,保存并关闭配置文件即可。