Golang语言特性
1.Go语言的优势
1.1极简单的部署方式
—可以直接编译成机器码。代码可以直接转换为二进制数据,在操作系统上可以直接./去执行。
—不依赖其他库。最终生成的可执行程序是一个静态的二进制文本文件。
—可以直接运行即可部署。
—静态类型语言。编译的时候检查出来隐藏的大多数问题。
1.2语言层面的并发。
<1.天生的基因支持 <2.充分的利用多核
package main
import (
"fmt"
"time"
)
func goFunc(i int) {
fmt.Println("goroutine ", i, " ...")
}
func main() {
for i := 0; i < 10000; i++ {
go goFunc(i) //开启一个并发协程
}
time.Sleep(time.Second)
}
1.3强大的标准库
—runtime系统调度机制。
—高效的GC垃圾回收机制。
—丰富的标准库。
2.Golang适合做什么
(1)、云计算基础设施领域
代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。
(2)、基础后端软件
代表项目:tidb、influxdb、cockroachdb等。
(3)、微服务
代表项目:go-kit、micro、monzo bank的typhon、bilibili等。
(4)、互联网基础设施
代表项目:以太坊、hyperledger等。
3.Golang明星作品
4.Golang的不足
1、包管理,大部分包都在github上。私人的包,不稳定。
2、无泛化类型(Golang 1.18+已经支持泛型)
3、所有Excepiton都用Error来处理(比较有争议)。Java全部error都捕获。
4、对C的降级处理,并非无缝,没有C降级到asm那么完美(硬件、序列化问题)