Go后端开发 – Golang的语言特性
文章目录
- Go后端开发 -- Golang的语言特性
- 一、Golang的优势
- 1.部署极其简单:
- 2.静态语言
- 3.语言层面的并发
- 4.强大的标准库
- 5.简单易学
- 6.运行效率对比
- 二、Golang的适用领域
- 1.应用领域
- 2.明星产品
- 三、Golang的不足
一、Golang的优势
1.部署极其简单:
- 可直接变异成机器码;
- 不依赖其他库
- 直接运行即可部署
通过``可以直接进行编译:
编译完成的可执行程序是比较大的,因为已经把所有需要的库全部静态编译起来了;
通过ldd
指令查看库依赖,发现除了标准的so、libc和pthread库
外,不依赖其他的库,可以直接./main
执行
2.静态语言
编译的时候就可以检查出来隐藏的大多数问题;
通过编译的时候就可以知道代码哪里有问题;
3.语言层面的并发
天生支持并发,充分的利用多核;
package mainimport ("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)
}
4.强大的标准库
- runtime系统调度机制
- 高效的GC垃圾回收
- 丰富的标准库
5.简单易学
- 25个关键字
- 内嵌C语法支持
- 面向对象特征(封装、继承、多态)
- 跨平台
6.运行效率对比
二、Golang的适用领域
1.应用领域
-
云计算基础设施领域
代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。 -
基础后端软件
代表项目:tidb、influxdb、cockroachdb等。 -
微服务
代表项目:go-kit、micro、monzo bank的typhon、bilibili等。 -
互联网基础设施
代表项目:以太坊、hyperledger等。
2.明星产品
三、Golang的不足
- 包管理,大部分包都在github上
所使用的大部分第三方库,都是托管在github上的;
对于代码稳定性比较有风险; - 所有Excepiton都用Error来处理
不存在try...catch...语法
- 对C的降级处理,并非无缝,没有C降级到asm汇编那么完美(序列化问题)