携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
-
实现目的
- Golang 简称为 go,作为一门开源的编程语言,借鉴了多种语言的思想,平衡了底层系统语言的能力,目的在于降低构建简单、可靠、高效软件的门槛,用更少做到更多
-
开发速度
- go没有了从编译代码到执行代码的执行过程,简化了解决依赖的算法,提供了更快的编译速度,收获了更高的相对剩余价值。(相应的,再也没有了因为编译大型系统而玩耍的借口了)
-
并发
-
充分利用现代计算机的多核特征,高效利用硬件资源,如goroutine、channel
-
goroutine
- 协程,一种用户级线程,可以与其他goroutine并行执行的函数,也可以与主程序(程序的入口 main)并行执行 ,使用的内存资源比线程更少,有其自动配置的逻辑处理器进行调度,显著减少开发工作量
-
channel
- 通道,一种数据结构,用于goroutine之间进行安全的数据通信,避免由共享内存访问引起的问题,保证同一时刻只有一个goroutine进行操作共享数据
- 每次进出都会经历一次拷贝,且不会再拷贝之前进行阻塞。
- 不要通过共享内存来通信,⽽应该通过通信来共享内存。-- go哲学
-
-
-
类型系统
- 没有继承使得更加灵活,在 go 里面使用组合设计模式,大大提高了对行为的建模能力
- 只要有类似鸭子的能力,那么它就是鸭子(鸭子类型)
-
内存管理
- 现代化的垃圾回收机制,虽会带来一些额外开销,但是使得开发能力降低,让内存管理交由编译器进行操作。