5.1 KiB
5.1 KiB
一 Go语言介绍
Go语言是Google公司开发的一种静态、编译型语言,具备自动垃圾回收功能,原生支持并发开发。
Go的诞生是为了解决当下编程语言对并发支持不友好、编译速度慢、编程复杂这三个主要问题。
Go既拥有接近静态编译语言(如C)的安全和性能,又有接近脚本语言(如python)的开发效率,其主要特点有:
- 天然并发:语言层面支持并发,包括gorotuine、channel
- 语法优势:没有历史包袱,包含多返回值、匿名函数、defer
- 语言层面支持多核CPU利用
与Java相比的不同:
- 没有Java支持的一些面向对象思想:重载、构造函数、继承等
- 代码规范严格:花括号位置固定,变量名大小写代表公有私有等
- 支持函数式编程:匿名函数,闭包
- 接口非侵入式:不需要显式声明对接口的继承,实现了接口的方法即为实现了该接口类型
二 Go安装
推荐使用官方的安装包直接安装,下载地址:https://golang.google.cn/dl/
贴士:本笔记都是基于go1.13
Win安装Go:
打开Win安装包下一步下一步即可,默认安装在目录:c:\Go
Mac安装Go:
打开Mac安装包下一步下一步即可,需要预装Xcode。安装完毕后需配置环境变量即可使用,但是如果要使用一些go mod
功能推荐如下配置:
vim ~/.bash_profile
export GOROOT=/usr/local/go # golang本身的安装位置
export GOPATH=~/go/ # golang包的本地安装位置
export GOPROXY=https://goproxy.io # golang包的下载代理
export GO111MODULE=on # 开启go mod模式
export PATH=$PATH:$GOROOT/bin # go本身二进制文件的环境变量
export PATH=$PATH:$GOPATH/bin # go第三方二进制文件的环境便令
# 重启环境
source ~/.bash_profile
Linux安装Go:
# 下载解压
wget https://dl.google.com/go/go1.13.1.linux-amd64.tar.gz
tar zxvf go*.tar.gz -C /usr/local/
# 配置环境:注意该环境必须是go1.11版本及以上且项目要求使用go mod才可以开启
vim /etc/profile
export GOROOT=/usr/local/go # golang本身的安装位置
export GOPATH=~/go # golang包的本地安装位置
export GOPROXY=https://goproxy.io,direct # golang包的下载代理,回源地址获取
export GO111MODULE=on # 开启go mod模式
export PATH=$PATH:$GOROOT/bin # go本身二进制文件的环境变量
export PATH=$PATH:$GOPATH/bin # go第三方二进制文件的环境便令
# 重启环境
source /etc/profile
测试安装:
# 查看go版本
go version
# 查看go环境配置
go env
关于go modules
的详细讲解位于本章12节。
三 HelloWorld
新建文件hello.go
,代码如下:
package main //每个程序都有且仅有一个main包
import "fmt"
func main() { //主函数main只有一个
fmt.Println("Hello World!") //函数调用:包名.函数名
}
运行文件:
# 执行方式一:先编译,再运行
go build hello.go # 编译。在同级目录下生成文件`hello`,添加参数`-o 名称` 则可指定生成的文件名
./hello # 运行。贴士:win下生成的是.exe文件,直接双击执行即可
# 执行方式二:直接运行
go run hello.go
两种执行流程的区别:
- 先编译方式:可执行文件可以在任意没有go环境的机器上运行,(因为go依赖被打包进了可执行文件)
- 直接执行方式:源码执行时,依赖于机器上的go环境,没有go环境无法直接运行
四 Go语法注意
- Go源文件以 "go" 为扩展名
- 与Java、C语言类似,Go应用程序的执行入口也是main()函数
- Go语言严格区分大小写
- Go不需要分号结尾
- Go编译是一行一行执行,所以不能将类似两个 Print 函数写在一行
- Go语言定义的变量或者import的包如果没有使用到,代码不能编译通过
- Go的注释使用 // 或者 /* */
五 开发工具推荐
笔者推荐的go开发工具:
- goland
- vscode
vscode的相关go插件会出现无法下载情况,解决办法:
# 如果开启了go mod,则
go get -u -v github.com/ramya-rao-a/go-outline
go get -u -v github.com/acroca/go-symbols
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/sqs/goreturns
go get -u -v github.com/cweill/gotests/gotests
go get -u -v golang.org/x/lint/golint
# 如果未开启go mod,则需要进入cd $GOPATH/src ,使用 git clone 下载上述文件
# 安装
cd $GOPATH
go install github.com/ramya-rao-a/go-outline
go install github.com/acroca/go-symbols
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename
go install github.com/rogpeppe/godef
go install github.com/sqs/goreturns
go install github.com/cweill/gotests/gotests
go install golang.org/x/lint/golint