> 文章列表 > 【golang学习笔记】——(四)Go语言的一些特质

【golang学习笔记】——(四)Go语言的一些特质

【golang学习笔记】——(四)Go语言的一些特质

1、Go优点

Go的诞生不是凭空出现,Go的前期是Google的大佬们20%空余时间来做的一件伟大的事情,直至后来基本完善后由google的一些开发者全职投入。

为啥要有Go?在Go之前开发者难以找到满足同时兼顾编译和执行的趁手武器,大圣在东海不也是选了良久,最后才选择了自己最爱的金箍棒。执行速度快但是编译速度慢的C++,编译速度快但是执行效率又逊一筹的java,what can we select???Duang,Duang,Duang,hi,we go!Go语言就是在这种情况下诞生了,兼顾快速编译高效执行,同时为了能让当前的主流语言开发者能更顺手的使用Go,Go是类C语言的语法,但是同时又极大简化了这些语法的使用,使得代码更为简洁干净易读,也就是易于开发,同时也拥有一些动态语言的特性。

Go是类型和内存安全的,虽有指针但是不允许进行指针运算。

Go拥有对网络通信、并发的良好支持。设计者通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 channel 来实现各个 goroutine 之间的通信。他们实现了分段栈增长和 goroutine 在线程基础上多路复用技术的自动化。

简化C/C++中依赖关系,C/C++的头文件include方式,导致越来越多依赖关系使得编译庞大而繁重的工作量,构建大项目时间久,Go采用拥有严格依赖关系检查机制的包模型方式,大大提升编译构建效率,堪比脚本语言和动态语言。

Go也抛弃了C/C++开发者的需要自行管理内存的机制,使用标记-清除算法来高效回收垃圾。

Go还引入了java的反射机制,这是对C++的一个颠覆。

Go支持调用C库,可以调用C代码提供的方法库。

Go减少了C++中较多的关键字,提升代打简洁度,且Go的关键字在编译过程中少到不需要符号表来解析。

Go没有类和继承,通过接口可以实现多态。

Go使用静态类型,所以Go是类型安全的语言。

Go是强类型语言,隐式的类型转换是不允许的。

Go支持交叉编译,可以在Linux运行的环境上开发Windows的代码。

Go是第一门完全支持UTF-8的编程语言,可以处理使用 UTF-8 编码的字符串,就连它的源码文件格式都是使用的 UTF-8 编码。

2、Go的一些缺点或者说缺失

不支持动态加载代码;

不支持动态链接库;

不支持泛型;

不支持静态变量;

为了简化设计,不支持函数重载和操作符重载;

注:为Go的初学者,一些总结是自己的理解,一些是网文或者书籍知识的罗列。