linux eclipse golang,Golang 一天从入门到放弃-Go语言中文社区

开发工具

liteide

调试时unable to initialize decompress status for section .zdebug_abbrev,工具栏 调试(D) -----> 选中 debugger/delve 将debugger 从 gdb 切换成 delve 就可以正常debug了

eclipse + GoClipse插件

a0d3c3ebb47e4990620d349dc018db0c.png

image.png

注意

Executable file doesn't exist,请删掉环境变量GOBIN,同时确保GOPATH和GOROOT不一样

上述例子中的源代码写成package hello也能成功执行

“Resource doesn't have a corresponding Go package可以通过两种方式解决,要么把GOPATH设置为当前项目目录,要么把当前项目放到GOPATH/src/yourproject目录。参考Workspaces, src不能直接放源代码,src下面还要有子目录

代码提示和自动补全功能需要安装gocode, 如果go get -u -v github.com/nsf/gocode无法下载,可以把gocode的路径指向liteide的bin目录下的gocode。正常情况点击下图中的download按钮可以自动下载,

629312ff824dfbfb34920468112bf290.png

image.png

debug需要是使用GDB, 路径指向liteide的GDB或者Mingw-w64的GDB即可,但实际上经常会报错。

VS Code + go插件

插件名字就叫go, 安装好后创建一个空文件夹,VSCODE打开空文件夹,在里面创建main.go,这时候VSCODE会提示需要安装插件,按照提示选择install all让它自动安装即可。如果出错可以参考这里。

Go现在的调试工具支持的都不太好,可以使用GDB或者Delve(还有已经过气的godebug), 但GDB在WINDOWS上支持的不好,最好用MAC或者LINUX

语法

每行末尾可以使用分号,也可以不使用分号

申明的变量必须使用否则会报错 declared and not used

:=赋值操作只能在函数内部使用,否则会报错syntax error: non-declaration statement outside function body

切片和数组的区别

声明时的区别:声明数组时,方括号内写明了数组的长度或使用...自动计算长度,而声明slice时,方括号内没有任何字符。

//定义数组:指定长度

var x [3]int = [3]int{1, 2, 3}

var array = [10]byte{'a','b','c','d','e','f','g','h','i','j'}

//定义数组:不指定长度

var y = [...]int{1, 2, 3}

//定义切片

var x2 []int = []int{1, 2, 3}

var y2 = y[0:1]

var z2 []int

//go不支持在函数外赋值与调用操作, 但可以声明一个变量或者声明并初始化一个变量

// z2 = x[0:1] // syntax error: non-declaration statement outside function body

构建项目

常见工具有makefile, gradle, maven。当然了,简单项目,go run或者go build命令就足够了,不需要什么makefile或gradle。

采用Glide对Golang进行包管理

最简单的包管理就是用go get解决依赖,复杂一点的可以使用一些包管理工具。

常见包管理工具:

#安装glide

pilot@ubuntu:~$go get github.com/Masterminds/glide

pilot@ubuntu:~$cd github.com/Masterminds/glide

# 注意,如果是离线安装的话,需要执行 go install

pilot@ubuntu:~$make build

pilot@ubuntu:~$go build -o glide -ldflags "-X main.version=v0.11.0" glide.go

#或者,如果是ubuntu,可以使用如下方式安装

$ sudo add-apt-repository ppa:masterminds/glide && sudo apt-get update

$ sudo apt-get install glide

#在项目的 根目录运行下面的命令产生 glide.yaml,Glide 能检测项目的依赖包 并且 创建一个名为 glide.yaml 的文件。能自动识别 Godep, GPM, Gom, and GB 等工具的配置文件。

pilot@ubuntu:~$glide init

#更新依赖包 执行如下命令,依据配置文件 glide.yaml 的内容,计算各个依赖包的精确版本号

pilot@ubuntu:~$glide up

#下载安装依赖包。这个命令会做以下 2 件事: (1) 如果 glide.lock 文件已经存在,Glide 会把 glide.lock 中已经计算好的确定版本号的依赖包批量下载到 vendor/ 目录下; (2) 如果 glide.local 文件不存在,则会先执行 update 命令;

pilot@ubuntu:~$glide install

#增加更多的 依赖包 使用 get 命令,Glide 能帮你添加更多的依赖包到 glide.yaml 文件中,如下所示。glide get 命令功能 类似 go get,但是它会把依赖包下载到 vendor/ 目录,并且把相关信息配置到 glide.yaml 文件。这个 get 命令 也可以带版本号。glide 会把下载下来的包缓存到 ~/.glide/cache 目录下 。

pilot@ubuntu:~$glide get github.com/Masterminds/semver #glide get github.com/Masterminds/semver#~1.2.0

glide init 初始化更新都非常慢

[ERROR] Update failed for golang.org/x/crypto/blowfish: Cannot detect VCS

解决方法:指向github

修改glide.yaml文件中的

package golang.org/x/crypto/blowfish为github.org/golang/crypto/blowfish

或者通过如下方式:

$ rm -rf ~/.glide

$ mkdir -p ~/.glide

$ glide mirror set https://golang.org/x/crypto/blowfish https://github.org/golang/crypto/blowfish --vcs git

$ glide mirror set https://google.golang.org/api/compute/v1 https://github.com/googleapis/google-api-go-client/compute --vcs git

$ glide mirror set https://google.golang.org/genproto/protobuf/field_mask https://github.com/google/go-genproto/tree/master/protobuf/field_mask --vcs git

$ glide init

$ glide install

$ glide up

镜像相关:

#清理缓存,缓存位置$HOME/.glide/cache/src

glide cc

#设置镜像,镜像映射文件 $HOME/.glide/mirrors.yaml

glide mirror set [original] [replacement]

glide mirror set [original] [replacement] --vcs [type]

#移除镜像

glide mirror remove [original]

ubuntu配置golang开发环境

pilot@ubuntu:~$sudo apt install golang-go

pilot@ubuntu:~$mkdir gopath

pilot@ubuntu:~$ mkdir gopath/src

pilot@ubuntu:~$ mkdir gopath/pkg

pilot@ubuntu:~$ mkdir gopath/bin

#添加gopath路径到/etc/profile,添加如下两行到/ete/profile

export GOPATH=/home/pilot/gopath

export PATH=$PATH:$GOPATH/bin

golang静态检查goreporter

$pwd

$/gopath/src

$go get -u github.com/360EntSecGroup-Skylar/goreporter

$ls /gopath/bin

goreporter

$ls /gopath/src

golang-helloworld

$cd /gopath/src

#goreporter -p [projectRelativePath] -r [reportPath] -e [exceptPackagesName] -f [json/html/text] {-t templatePathIfHtml}

#扫描的时候忽略deps目录,产生的报告

$../bin/goreporter.exe -p ./golang-helloworld/ -r ./ -e deps -f html

References

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值