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的初学者,一些总结是自己的理解,一些是网文或者书籍知识的罗列。
文章来源:https://blog.csdn.net/qq_39974998/article/details/130299765