说明
go是新兴高级开发语言,主要应用于区块链和虚拟化开发,主要软件有docker,语言及支持高并发,有轻量级线程协程占用资源小,相比于Java缺少企业级框架。
安装
环境说明
- 系统:win10
- go版本 :1.15.6
下载
配置
- 将zip包解压到安装位置,这里是D:\install\go
- 配置环境变量:GOROOT、GOPATH、path添加bin目录。
- GOROOT go安装目录,这里是D:\install\go
- GOPATH go项目目录,后面got get安装的第三方包都会装在这里,这里用D:\goWorkspace,目录先手动创建。
- path 添加go的bin配置:%GOROOT%\bin和%GOPATH%\bin
验证
- 打开cmd输入 go version没报错,正常打印版本,说明安装成功
开发工具
- 开发工具可选择liteide.exe和vscode、idea、eclipse,试用过liteide和vscode,eclipse装插件估计会卡,idea不熟悉,选择了vscode,用起来比较舒心。
vscode
- 安装不在说明,可下载安装或解压包,装上go插件即可。
项目配置
- 配置GOPATH为D:\goWorkspace,用vscode打开这个目录,在这个目录下新建项目目录,GOPATH定义是根目录,下面的子目录才是创建项目的目录,这一块饶了很大弯。
- 新建目录first,创建first.go文件,代码如下
package main
import "fmt"
/**
* 第一个go程序
*/
func main() {
fmt.Println("Hello, World!")
}
- 然后顶部菜单栏,终端 --> 新建终端,打开新终端
- cd到first目录,执行go run first.go运行程序
- 至此项目创建完成。
国内get源配置
- 项目需要使用第三方库时,go官方get源在国外,下载巨慢,安装库很难成功,有人做了个国内源(好人啊),git地址。使用方法如下,cmd后:
set GO111MODULE = "on" go env -w GOPROXY=https://mirrors.aliyun.com/goproxy
- GO111MODULE 开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是 auto。
- GO111MODULE=off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包
- GO111MODULE=on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖
- GO111MODULE=auto 在 $GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。
- GO111MODULE 开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是 auto。
- 关闭cmd窗口可能失效,长期有效可配置到环境变量里,增加类似GOROOT值即可。
- 具体操作,进入first目录下,创建mod文件,管理包运行
go mod init 项目名
,生成项目名.mod文件,打包时,会以项目名为准。后面每次go get 包时,会自动添加包名和版本信息到mod文件。
常用命令
- 下载第三方包:go get 包名
- 运行:go run
- 编译 go build
- 普通打包
go build main.go
- 最小化打包,命令
go build -ldflags="-s -w -H windowsgui" main.go
- -ldflags=“参数”: 表示将引号里面的参数传给编译器
- -s:去掉符号信息 (这样panic时,stack trace就没有任何文件名/行号信息了,这等价于普通C/C+=程序被strip的效果)
- -w:去掉DWARF调试信息 (得到的程序就不能用gdb调试了)
- -H windowsgui : 以windows gui形式打包,不带dos窗口。其中注意H是大写的
- 最小化打包,命令
- 查看环境信息:go env
- 创建包管理文件:go mod init 项目名
代码格式化
- go官方提供了代码格式化工具,实现自动导包、代码格式及异常提醒,如果下载报错,切换官方源试试。
go get -v github.com/rogpeppe/godef
go get -v github.com/stamblerre/gocode
go get -v github.com/uudashr/gopkgs/v2/cmd/gopkgs
go get -v github.com/sqs/goreturns
总结
- 网上找了很多,介绍相对片面,导入第三包要么下载失败,下载成功了mod文件创建在了GOPATH目录下,项目结构 不对又无法识别,卡了很长时间,找到资料很少有详细介绍的,郁闷。
- 本人主语言Java,本搭建方式可用,没有代码提示功能,后续会加上,有问题欢迎留言。