Golang横空出世的背景(为什么选择Go)
- Go被设计为21世纪的C语言,它属于C语言家族,比如:C/C++、Java和C#,同时它吸收了很多现在编程语言的优点。
- 对Go的并发机制是源于CSP(Communication Sequential Processes),这同样的机制也被于Erlang。
- 对C、C++相比,其语法得到了很大程序上的简化,使代码更简明、清楚,同时拥有动态语言的一些特点
- 基于BSD完全开源,所以能免费的被任何人用于适合商业目的。
-
语言层面对并发的支持(goroutine:独立于OS的线程,所以多个goroutine可以运行在一个OS的线程里,也可以分布到多个OS线程里。goroutine是从OS线程上抽象出来的一个轻量级的基于CSP的协程)
- 在语言层面加入对并发的支持,而不是以库的形式提供
- 更高层次的并发抽象,而不是直接暴露OS的并发机制.
- 多个goroutine间是并行的。
- 底层混合使用非阻塞IO和线程
- 主要目的
- 融合效率、速度和安全的强类型的静态编译语言,同时能够容易的进行编程,让编程变得更有乐趣。
- 较少的关键字和简洁的语法
- 类型安全和内存安全:在指针类型,但不允许对指针进行操作。
- 支持网络通信、并发控制、并行计算和分布式计算。
- 在语言层面实现对多处理器(或多核)进行编程
- 内嵌运行时反射机制。
- 可以集成C语言实现的库
- 它不是传统意义上的面向对象语言(没有类的概念),但它有接口(interface),由此实现多态特性。
- 函数(Function)是它的基本构成单元(也可以叫着面向函数的程序设计语言)
- 是一种静态类型和安全的语言,将其编译、连接成本地代码(拥有高效的执行效率)
- 支持交叉编译,并采用编译的编码:UTF-8
- 没有函数和操作符的重载
- 不支持隐式类型转换, 避免产生Bug和迷惑。
- 不支持类和继承。
- 不支持动态代码加载
- 不支持动态库
- 不支持泛型
- 强调简单、易学
- 内存管理和语法简单
- 快速编译
- 并发支持
- 静态类型
- 部署简单(go install)
- 自身就是文档(通过godoc将代码中的注释信息构造成文档)
- 开源免费(BSD licensed)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。