Windows下GO的开发环境配置及多工作区配置
2021-04-21 05:29
本文主要内容如下几点:
- 下载安装GO
- 配置多个工作区,第一个默认放第三方包,其他的放项目代码
- 包管理器
godep
的安装使用 - 安装过程中的一些坑(墙)
- vscode中使用go
1. 下载并安装go
官网下载 或者golang中国下载
默认安装到C:\GO
,使用go version
查看版本:
当前版本为:1.10
2. 新建工作区
- 新建两个文件夹
DepSource\src:放置go依赖包的源代码
GoCoding\src:放置自己或者测试项目的代码目录 - 将这两个文件夹的路径以及对应的bin按顺序配置到环境变量
GOPATH
中,新建系统变量GOPATH,然后值为:C:\GoWorks\DepSource;C:\GoWorks\GoCoding;C:\GoWorks\DepSource\bin;C:\GoWorks\GoCoding\bin;
盘符请自行修改 - 将
%GOPATH%
配置到系统变量path
中
------------
在家里面电脑重新配置了下,Go安装在了D盘,GOPATH配置到了E盘,如下图所示
- 文件夹
- 环境变量
3. 安装包管理器godep
3.1 下载
- 获取godep包:
go get -v github.com/tools/godep
-v 显示日志输出 -u 更新到最新版本
- 下载完成后查看
C:\GoWorks\DepSource\bin\godep.exe
是否存在godep.exe,有则安装成功
-
根据
Godeps\Godeps.json
配置还原依赖包如果项目中有
Godeps\Godeps.json
,则可以使用godep get
安装所需依赖包
3.2 生成go项目的依赖配置文件
-
新建一个go项目oneGo(GoCoding\src\oneGO),创建
main.go
文件,并引入一个测试包,并打开cmd到当前路径package main import ( test "github.com/yimogit/gotest" ) func main() { test.HelloWord() }
- 安装测试的包:
go get -v github.com/yimogit/gotest
- 构建依赖配置:
godep save
- success,若成功则看到oneGo文件夹下生成了
Godeps,vendor
文件夹 - 运行:
go run main.go
,则控制台输出Hello Word
打包exe则使用
go build -o test.exe
4.在安装go框架gin的时候会有一些依赖包需要手动安装一些包
开始执行godep save
构建依赖配置文件,第一次使用这个命令的话会报一堆缺少github.com/*/*
包的错误,安装即可 错误图一览
当遇到godep: Package (golang.org/x/sys/unix) not found
,即从golang.org下载包失败的时候(如果你能成功算我没说),需要改变路径从GitHub去下载(墙了,然后go在GitHub放了一份~)
具体解决方案为:
在之前设置的GOPATH路径(C:\GoWorks\DepSource\src)新建golang.org\x
文件夹,然后克隆或者下载sys包
完整命令(自行修改路径):git clone https://github.com/golang/sys.git C:\GoWorks\DepSource\src\golang.org\x\sys
在安装过程若出现包下载失败的情况可以直接使用clone命令下载到github.com文件夹,然后执行go get github.com/x/x
就能够安装了
5. vscode中使用需要安装的依赖包
安装扩展:vscode-go
安装依赖:可以根据vscode的提示或者直接安装下面这些依赖包,更多介绍可参考VsCode中配置GO开发环境
go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-find-references
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols
go get -u -v github.com/peterh/liner
go get -u -v github.com/derekparker/delve/cmd/dlv