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那么完美(硬件、序列化问题)
|