Go 语言的介绍
计算机一直在演化,伴随的编程语言也在演化,涉及编程相关复杂的概念也有不同的取舍。
学一门新的开发语言,有必要了解该门语言的一些优点或特性、在编程领域解决的问题。然后在实践中应用并深入体会它。
Go 语言介绍
Go 语言区别于其他编程语言的地方:
- Go 语言对传统的面向对象开发进行了重新思考,并且提供了更高效的复用代码的手段。
- Go 语言还让用户能更高新地利用昂贵服务器上的所有核心。
- Go 语言编译大型项目速度也很快。
Go 语言解决现代编程难题
开发速度
Go 语言使用了更加智能的编译器,并简化了解决依赖的算法,最终提供了更快的编译速度。编译 Go 程序时,编译器只会关注那些直接被引用的库,而不像 Java、C和C++那样,遍历依赖链中所有的依赖库。
高效并发
现代计算机都拥有多个核,但大部分编程语言都没有有效的工具让程序可以轻易利用这些资源。这些语言需要写大量的线程同步代码来利用多个核,很容易导致错误。
Go 语言对并发的支持是这门语言最重要的特性之一。goroutine 很像线程,但他占用内存远少于线程,使用它需要的代码更少。通道(channel)是一种内置的数据结构,可以让用户在不同的 goroutine 之间同步发送具有类型的消息。这让编程模型更倾向于在 goroutine 之间发送消息,而不是让多个 goroutine 争夺同一个数据的使用权。
Go 语言的类型系统
Go 语言提供了灵活的、无继承的类型系统,无需降低运行性能就能最大程度上复用代码。
Go 开发者使用组合(Composition)设计模式,只需简单地将一个类型嵌入到另一个类型,就能复用所有的功能。
在 Go 语言中,一个类型由其他更微小的类型组合而成,避免了传统的基于继承的模型。
类型简单
Go 语言不仅有类似 int 和 string 这样的内置类型,还支持用户定义的类型,还可以声明操作该类型数据的方法。
Go 接口对一组行为建模
接口用于描述类型的行为。如果一个类型的实例实现了一个接口,意味着这个实例可以执行一组特定的行为。甚至不需要去声明这个实例实现某个,只需要实现这组行为就好。
在 Go 语言中,如果一个类型实现了一个接口的所有方法,那么这个类型的实例就可以存储在这个接口类型的实例中,不需要额外声明。
内存管理
Go 语言拥有现代化的垃圾回收机制。