03.Go的优劣

1.优势

1.1.极简单的部署方式

  • 可直接编译成机器码
  • 不依赖其他库
  • 直接运行即可部署

1.2.静态类型语言

  • 编译的时候检查出来隐藏的大多数问题

1.3.语言层面的并发

  • 天生的基于支持
  • 重复利用多核

    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.4.强大的标准库

  • runtime系统调度机制
  • 高效的Gc垃圾回收
  • 丰富的标准库

1.5.简单易学

  • 25个关键字
  • C语言简洁基因,内嵌C语法支持
  • 面向对象特征(继承、多态、封装)
  • 跨平台

1.6.“大厂”领军

1.7.性能比对

2.Golang强项(适合用来做什么?)

2.1.云计算基础设置领域

代表项目

  • docker
  • kubernetes
  • etcd
  • consul
  • cloudflare CDN
  • 七牛云存储
  • ….

2.2.基础后端软件

代表项目

  • tidb
  • influxdb
  • cockroachdb

2.3.微服务

代表项目

  • go-kit
  • micro
  • monzo bank的typhon
  • bilibili

2.4.互联网基础设施

代表项目

  • 以太坊
  • hyperledger

2.5.明星项目

  • docker
  • kubernates

3.不足

  • 包管理-大部分都在github
  • 泛型支持 – 进行中
  • 所有Exception都用Error来处理(比较有争议)
  • C的降级处理,并非无缝,没有C降级到asm那么完美(序列化问题)

4.总结

posted @ 2021-10-05 07:36  可可逗豆  阅读(73)  评论(0)    收藏  举报