8小时转职Golang

基于go1.14.2

1. go简介

1.1 Go生态,站在巨人的肩膀上

1732603084905

1.2 开发环境安装

Go官网下载地址:https://golang.org/dl/

Go官方镜像站(推荐):https://golang.google.cn/dl/

将/usr/local/go/bin添加到PATH环境变量中,创建workspace目录/home/go,在这个文件夹下创建 /bin /src /pkg 三个目录。

然后将/home/go目录配置到GOPATH(工作空间)目录中,其中GO代码必须在工作空间中。

/usr/local/go/bin目录配置GOROOT 到环境变量里。

1
2
3
4
export GOROOT="/usr/local/go"
export GOPATH=$HOME/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN

Go1.14版本之后,都推荐使用go mod模式来管理依赖了,也不再强制我们把代码必须写在GOPATH下面的src目录了,你可以在你电脑的任意位置编写go代码。

默认GoPROXY配置是:GOPROXY=https://proxy.golang.org,direct,
由于国内访问不到 https://proxy.golang.org 所以我们需要换一个PROXY,这里推荐使用https://goproxy.iohttps://goproxy.cn。

可以执行下面的命令修改GOPROXY:

go env -w GOPROXY=https://goproxy.cn,direct

1.3 Go语言特性

极简部署:可直接编译机器码,不依赖其他库,直接运行可部署;

静态语言:编译的时候检查出大多数问题;

语言层面并发支持:天生基因支持,充分利用多核

强大标准库:runtime系统调度机制,高效的GC垃圾回收,丰富的标准库

简单易学:继承,封装,多态,跨平台

大厂领军:Google,facebook,tencent,baidu,京东,小米,阿里,字节,新浪,滴滴

1.4 Golang适合做什么

(1)、云计算基础设施领域

代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。

(2)、基础后端软件

代表项目:tidb、influxdb、cockroachdb等。

(3)、微服务

代表项目:go-kit、micro、monzo bank的typhon、bilibili等。

(4)、互联网基础设施

代表项目:以太坊、hyperledger等。

1.5 Golang的不足

1、包管理,大部分包都在github上

2、无泛化类型:(Golang 1.18+已经支持泛型)

3、所有Excepiton都用Error来处理(比较有争议)。

4、对C的降级处理,并非无缝,没有C降级到asm那么完美(序列化问题)

2. 第一个Golang程序

到$GOPATH目录之后,有三个文件夹 /bin /src /pkg。 src表示工程源码文件,进入src下面后,每个文件夹是一个工程,创建一个项目(文件夹)

go run a.go 表示直接编译并运行应用程序

go build a.go 会生成一个exe文件

go中换行时,写不写;都可以。