Golang

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
	Golang环境安装
源码包下载
国外官方:https://golang.org/dl/
中国镜像:https://golang.google.cn/dl/
中文网站:https://studygolang.com/dl
Linux环境
源码包
go1.14.4.linux-amd64.tar.gz
解压源码包到/usr/local
sudo tar -zxvf go1.14.4.linux-amd64.tar.gz -C /usr/local/
配置环境变量
打开~/.bashrc
添加配置变量
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
GOROOT 表示源码包所在路径
GOPATH 开发者Go的项目默认路径
不同的操作系统具体配置不同
检测开发环境
手动加载~/.bashrc
source ~/.bashrc
go version
go --help
没有任何错误提示表示搭建成功
IDE推荐
收费
Goland
免费
VSCode
Vim + GO 插件
GO语言特性
优势
简单的部署
可直接编译成机器码可执行
不依赖其他库
直接运行即可部署
静态类型语言
语言层面的并发
强大的标准库
runtime系统调度机制
高效的GC垃圾回收
丰富的标准库
简单易学
25个关键字
C语言简洁基因,内嵌C语言支持
面向对象特征
跨平台
应用场景
云计算基础设施领域
docker
kubernetes
etcd
consul
cloudflare CDN
七牛云存储
基础后端软件
tidb
influxdb
cockroachdb
微服务
go-kit
micro
互联网基础设施
以太坊
hyperledger
不足
包管理,大部分都在GitHub。
所有Exception都用Error来处理(比较有争议)。
对C的降级处理,并非无缝,没有C降级到asm那么完美(序列化问题)。
基本语法
程序入口main函数
变量声明及其初始化,var关键字
var a int //仅声明
var v_name = value //声明并初始化,类型推导。
v_name := value //短声明:省略var关键字,类型推导
var ( //这种分解的写法,一般用于声明全局变量
a int
b bool
) //多变量声明
_, value := 7, 5 //赋值
常量,const关键字
const identifier [type] = value
函数
defer
slice
map
面向对象
struct
struct
interface{}
reflect
Go Modules与GOPATH
goroutine
channel
Select