欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

GO语言学习心得

程序员文章站 2022-06-01 08:21:55
...

简单学习了一下GO语言,Google出品,值得期待

    GO语言一句话,就是一个小型的C语言,灵活度增加,复杂度降低:

1. 扩展了C的语法

     平行赋值,函数多返回值,可变参数的简化和for语法扩展有亮点

     强类型语言,变量类型自动声明聊胜于无

     函数免声明可以省点事情,基本上除C外,其它语言都早就支持

     去除#define,虽然可以大幅提高编译速度以及增强可读性,但是灵活性也有不小的损失

     函数参数默认值好像被去除,可惜了

     将一些库的方法(go,defer)提升到语法层向,对初学者是一大福音

     并发库应该比较优化,这是高性能的保证

2. 过程式编程

     type struct只是结构体,加上了this指针函数成了方法,struct继承不能称为继承,有点像javascript的对象内容拷贝,也不支持多态,构造函数,调用父类方法等功能。

     弱化的指针,不支持除(*和&)外的任何操作,这是为了和C兼容,但需要用户来选择值传递还是指针传递显得有点多余。

     我还是更喜欢Java的模式,即基本类型值传递,对象和数值统一指针传递。这种方式下除了要将修改过基本类型参数的值传递出去有点不方便外,都非常和谐。而且去了指针这个大麻烦。

3. 面向接口

     interface和对象无关,真正面向接口,也支持多态,这点不错,多少可以弥补不支持继承的弱势,但是方法调用的开销可能会比较大

4. 垃圾回收

     GC机制简单(单一算法,stop-the-world且无法配置)压缩了GO做为实时系统的使用空间,期待这方面的改进或者提供一个可以关闭系统GC,交给用户手动控制的机制

5. 函数库

     系统提供的库功能很强大,但是数量有限,成熟的语言中多数使用的库都是第三方提供的

 

总结:

     做为C的替代品,GO在执行效率上肯定有优势。但是主流的语言(Python, Java, PHP,Ruby)也都提供JIT功能(运行过程中翻译成机器语言),特别是Java的JIT,同为强类型语言,JIT后已经可以接近C的性能。

     语法上,GO介于Java与Ruby/Python之间,指针机制略显鸡肋,用接口弥补对象的不足,对于Java/Ruby/Python的用户者会不习惯,但对C/PHP的用户者是一大提高

     GC的不足,库的匮乏是两大硬伤。在复杂系统开发会受到很大的局限。

     GO如果写小工具(功能独立,实时性要求不高)非常合适,如日志处理,后台计算

 

相关标签: GO语言