一、Go语言设计初衷
1、设计Go语言是为了解决当时Google开发遇到的问题:
-
大量的C++代码,同时又引入了Java和Python
-
成千上万的工程师
-
数以万计行的代码
-
分布式的编译系统
-
数百万的服务器
2、Google开发中的痛点:
-
编译慢
-
失控的依赖
-
每个工程师只是用了一个语言里面的一部分
-
程序难以维护(可读性差、文档不清晰等)
-
更新的花费越来越长
-
交叉编译困难
3、如何解决当前的问题和痛点?
-
Go希望成为互联网时代的C语言。多数系统级语言(包括Java和C#)的根本编程哲学来源于C++,将C++的面向对象进一步发扬光大。但是Go语言的设计者却有不同的看法,他们认为值得学习的是C语言。C语言经久不衰的根源是它足够简单。因此,Go语言也是足够简单。
-
所以,他们当时设计Go的目标是为了消除各种缓慢和笨重、改进各种低效和扩展性。Go是由那些开发大型系统的人设计的,同时也是为了这些人服务的;它是为了解决工程上的问题,不是为了研究语言设计;它还是为了让我们的编程变得更舒适和方便。
-
但是结合Google当时内部的一些现实情况,如很多工程师都是C系的,所以新设计的语言一定要易学习,最好是类似C的语言;20年没有出新的语言了,所以新设计的语言必须是现代化的(例如内置GC)等情况。最后根据实战经验,他们向着目标设计了Go这个语言。
4、Go语言的特色:
-
没有继承多态的面向对象
-
强一致类型
-
interface不需要显式声明(Duck Typing)
-
没有异常处理(Error is value)
-
基于首字母的可访问特性
-
不用的import或者变量引起编译错误
-
完整而卓越的标准库包
-
Go内置runtime(作用是性能监控、垃圾回收等)
二、Go语言的优势
1、学习曲线容易
Go语言语法简单,包含了类C语法。因为Go语言容易学习