golang开发环境配置以及简单使用

golang开发环境配置以及简单使用

编译golang程序

go build命令的使用
http://c.biancheng.net/view/120.html

使用go build, 将main.go和其他的go模块一起编译。
由于默认了gopath,且src没有放到默认gopath里面,因此,build后得到的可执行文件会出现在编译的目录下

其他各种go的指令

linux下配置

linux环境变量的配置

核心语句是
export PATH="$PATH:/usr/local/go/bin:$GOPATH/bin", 如果在shell中执行,则是临时的效果。如果要有长期效果,则要进入~/.bash_profile文件中加入以上语句。
然后执行以下命令
. ~/.bash_profile
如果没有该文件,则可以换为~/.bashrc, 或者放入环境信息文件/etc/profile中

$GOPATH的问题

GO语言需要弄明白两个关键路劲,GOROOT指向系统安装路径,GOPATH指向工作路径,这样就将工作目录和系统目录分离了。

参考:https://blog.csdn.net/chenjh213/article/details/51381024?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

https://blog.csdn.net/PETER327447/article/details/80926118?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

如果gopath是缺省的,那么在linux中就会默认为是$HOME/go/文件夹。 里面会有你安装的第三方的包。GOPATH 允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候 Windows 是分号,Linux 系统是冒号当有多个 GOPATH 时,默认会将 go get -v -u 的内容放在第一个目录下。实际上只需要一个gopath就行了。
https://learnku.com/articles/23613

源代码并不一定要放在gopath中,gopath只是一个默认的目录而已,它会把
G O P A T H 是 项 目 目 录 , 要 想 知 道 GOPATH是项目目录,要想知道 GOPATHGOPATH是否存在,可以用这句话执行:
echo $GOPATH

如果为空,则需要设置GOPATH环境变量

# 全局设置——打开/etc/profile
vim /etc/profile
# 用户设置——打开~/.bash_profile或者~/.bashrc

# 加入语句
export GOPATH=/usr/local/src/go_path

#保存退出
source /etc/profile

参考这一篇文档
https://studygolang.com/articles/4273

linux中bashrc和bash_profile的区别

https://www.cnblogs.com/yuanqiangfei/p/10232148.html

写入~/.bashrc文件

https://blog.csdn.net/weixin_30764137/article/details/99807396

linux source命令的执行

go modules

goproxy

因为谷歌的问题,国内无法直接下载go一切软件包,因此用goproxy代理来无阻碍下载第三方go包。
使用goproxy需要go1.11以上版本。

export GO111MODULE=on
export GOPROXY=https://goproxy.io
# go module和goproxy是配合使用的
#go1.13版本使用goproxy.cn,执行以下语句
go env -w GOPROXY=https://goproxy.cn,direct 

参考该文档
goproxy.cn参考https://segmentfault.com/a/1190000020293616?utm_source=tag-newest
https://blog.csdn.net/qq_42403866/article/details/93654421
ubuntu升级go至最新版

https://www.jianshu.com/p/017d836c9f47 #删除go语言后再安装go最新版

go出现cannot find package “github.com/xxxx/aaa-go” in any of

出现第三方包找不到的情况时,可以用
go get -v -u 引号里面的地址命令进行自动安装。——记得要先设置代理

go如何编译

安装go的linux版本

https://golang.org/doc/install?download=go1.14.linux-amd64.tar.gz

永久设置goproxy

https://studygolang.com/articles/22392?fr=sidebar
export GOPROXY=https://goproxy.io
goproxy的地址https://goproxy.io/zh/
或者直接一句话执行
echo "export GOPROXY=https://goproxy.io" >> ~/.profile && source ~/.profile

vs code的对应配置

查看go的配置 go env 指令,可以由此看到关于go的环境变量配置是否正确

WSL用vs code失败的原因是权限问题,因此安装go的插件最好在远程终端里用命令行
https://blog.csdn.net/adolphkevin/article/details/90274378
go的编译教程http://c.biancheng.net/view/123.html

在设置好GOPATH之后,用以下指令安装必备包,用vs code的时候要在setting.json中指定gopath路径

go  get -v -u github.com/uudashr/gopkgs/v2/cmd/gopkgs
go  get -v -u github.com/ramya-rao-a/go-outline
go  get -v -u github.com/acroca/go-symbols
go  get -v -u golang.org/x/tools/cmd/guru
go  get -v -u golang.org/x/tools/cmd/gorename
go  get -v -u github.com/cweill/gotests/...
go  get -v -u github.com/fatih/gomodifytags
go  get -v -u github.com/josharian/impl
go  get -v -u github.com/davidrjenni/reftools/cmd/fillstruct
go  get -v -u github.com/haya14busa/goplay/cmd/goplay
go  get -v -u github.com/godoctor/godoctor
go  get -v -u github.com/go-delve/delve/cmd/dlv
go  get -v -u github.com/stamblerre/gocode
go  get -v -u github.com/zmb3/gogetdoc
go  get -v -u golang.org/x/lint/golint
go  get -v -u golang.org/x/tools/gopls




go get 参数
-d 只下载不安装
-f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
-fix 在获取源码之后先运行 fix,然后再去做其他的事情
-t 同时也下载需要为运行测试所需要的包
-u 强制使用网络去更新包和它的依赖包
-v 显示执行的命令
详情参考https://www.cnblogs.com/mrbug/archive/2019/12/05/11978765.html

无法跳转定义

解决vs code无法安装go插件的问题

假如vs code自动安装go插件的时候出现了如下的问题

Installing 8 tools at D:\GoPath\bin
  go-outline
  go-symbols
  guru
  gorename
  dlv
  godef
  goreturns
  golint

Installing golang.org/x/tools/cmd/guru FAILED
Installing github.com/ramya-rao-a/go-outline FAILED
Installing golang.org/x/tools/cmd/gorename FAILED
Installing github.com/derekparker/delve/cmd/dlv SUCCEEDED
Installing github.com/acroca/go-symbols FAILED
Installing golang.org/x/tools/cmd/guru FAILED
Installing github.com/rogpeppe/godef SUCCEEDED
Installing golang.org/x/tools/cmd/gorename FAILED
Installing github.com/derekparker/delve/cmd/dlv SUCCEEDED
Installing github.com/rogpeppe/godef SUCCEEDED
Installing github.com/sqs/goreturns FAILED
Installing github.com/golang/lint/golint FAILED

6 tools failed to install.

go-outline:
Error: Command failed: C:\Go\bin\go.exe get -u -v github.com/ramya-rao-a/go-outline
github.com/ramya-rao-a/go-outline (download)
Fetching https://golang.org/x/tools/go/buildutil?go-get=1
https fetch failed: Get https://golang.org/x/tools/go/buildutil?go-get=1: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
package golang.org/x/tools/go/buildutil: unrecognized import path "golang.org/x/tools/go/buildutil" (https fetch: Get https://golang.org/x/tools/go/buildutil?go-get=1: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)
github.com/ramya-rao-a/go-outline (download)
Fetching https://golang.org/x/tools/go/buildutil?go-get=1
https fetch failed: Get https://golang.org/x/tools/go/buildutil?go-get=1: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
package golang.org/x/tools/go/buildutil: unrecognized import path "golang.org/x/tools/go/buildutil" (https fetch: Get https://golang.org/x/tools/go/buildutil?go-get=1: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)

参考
https://studygolang.com/articles/13732?fr=sidebar
https://www.jianshu.com/p/4f2c476e189a

需要自己手动添加几个文件夹。然后再用vs code 自动添加插件。
回到gopath目录
要自己去添加目录文件才行。

比较全的是这一篇

https://www.jianshu.com/p/f952042af8ff
由于网络问题,直接安装go的插件一定会出问题,因此,先要在gopath目录下建立几个文件夹:
$GOPATH/src/golang.org/x/
然后切换到该目录,执行
解决vscode中安装go tools和golint失败的问题https://blog.csdn.net/weixin_42162075/article/details/80877808

go mod的使用

https://segmentfault.com/a/1190000018536993

出现vs code 安装go插件失败的常见原因

go: writing stat cache: mkdir /$HOME: permission denied
https://github.com/golang/go/issues/26814
根本原因是在win端使用了WSL的目录,而这是不对的

在win上面的vs code的关于go语言的配置,不能设置为远程的linux端的目录,否则一定会出出错
而是要设置为windows端自己的,反正go可以跨平台编译。
即使使用了WSL,vs code的配置也要用win端的配置,gopath,goroot尤其不能用linux的而是只能用win自己的
参考 https://www.jianshu.com/p/b929d49af979
修改完成之后,仍然安装失败,就是由于网络的问题了

win安装

安装完成go的包之后,设置GOPATH,GOROOT和PATH三个系统变量
GOROOT是go的安装目录
GOPATH是Go的工作目录
PATH中放入go的bin目录
GOPROXY是设置代理
安装并且配置完成环境变量后,下载go 插件,一般来说,由于网络原因会自动安装失败,因此执行以下命令手动安装

go get -u -v github.com/ramya-rao-a/go-outline
go get -u -v github.com/acroca/go-symbols
go get -u -v github.com/mdempsky/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v golang.org/x/tools/cmd/godoc
go get -u -v github.com/zmb3/gogetdoc
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/fatih/gomodifytags
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/goimports
go get -u -v github.com/cweill/gotests/...
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v github.com/josharian/impl
go get -u -v github.com/haya14busa/goplay/cmd/goplay
go get -u -v github.com/uudashr/gopkgs/cmd/gopkgs
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
go get -u -v github.com/alecthomas/gometalinter
#gometalinter --install

由于网络的问题,可以参考Golang包代理及vscode 开发环境搭建
https://studygolang.com/articles/22392?fr=sidebar
要么使用代理,要么用另一种gopm来代替

go get -v -u github.com/gpmgo/gopm
#安装了gopm后,可以代替go get 
#下载安装swag 生成swagger文档的工具
gopm get -g -v github.com/swaggo/swag/cmd/swag

cd $GOPATH/src/github.com/swaggo/swag/cmd/swag

go install

不过最好还是设置goproxy,这样还是用go get 自动安装,非常方便
参考https://www.cnblogs.com/nickchen121/p/11517473.html

再把当前的开发的目录放入系统环境变脸的GOPATH中去
如果有第三方包,则使用加了代理之后的go get语句将该包直接下载下来

参考链接

https://studygolang.com/articles/23349?fr=sidebar

#linux设置环境变量
https://jingyan.baidu.com/article/c275f6ba6fd481e33d756726.html

go的代理

Golang的go get 代理设置:

Golang的go get使用系统的 http_proxy,但拉取代码时会使用 Git 的代理,

所以需要以下两步:

Step 1:设置系统代理

set http_proxy=http://127.0.0.1:12639

set https_proxy=http://127.0.0.1:12639

Step 2:设置Git代理。

全局:git config --global http.proxy http://127.0.0.1:12639

非全局:git config --http.proxy http://127.0.0.1:12639

vs code的go插件还是有Bug,

不建议使用,最好能用goLand

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值