这是我参与「第三届青训营 -后端场」笔记创作活动的第四篇笔记。
笔者在目前的实习工作中主要进行桌面应用开发,主力语言是C#&C++,最近几个月的业余时间尤其是参加青训营这段时间一直在进行Go语言相关的学习与开发,由此写下这篇文章进行一个简单的总结。
Go语言的优点
-
根据笔者目前的经验来看,Go语言相较于C#或者C++等语言,最大的优点,便是语法的灵活性。很多时候,在开发的过程中,使用Go语言的话,往往自己的思路能够很直接的转化为代码。
-
基于第一点,引出Go语言的另一个优点便是,可读性更高。因为对于阅读代码的人来说,Go语言语法的灵活性使得读者总能快速地看出某段代码的实现逻辑与功能。(当然,这一点可能是由于笔者在公司接触的其他语言的代码规模更大,导致在阅读时需要不停地跳转到封装的不同函数中造成较高的学习成本,而接触的Go语言相对较少,而产生的主观偏差,这一项仅供参考。)
-
Go语言自带的垃圾回收机制能够帮助开发者规避很多内存泄漏之类的错误。笔者使用C++开发的过程中,曾遇到一个Bug使我的应用程序崩溃,最后找到原因是某个变量在堆区上分配的内存区间过小,导致堆损坏异常。内存相关的Bug是非常令人头疼的问题,而笔者在Go语言开发中目前还未遇到类似的问题。
Go语言的缺点
-
目前笔者感受Go语言最为强烈的缺点,即Go语言目前的第三方库较少,笔者试图尝试利用Go语言进行桌面应用开发,但是由于目前Go语言在中文互联网上的资料较少,而桌面应用开发又是Go语言不侧重的方向,最后还是选择了C#进行开发。
-
Go语言仍在发展之中,最近几个月发布的Go1.18版本才开始支持泛型,并且据笔者在网络上看到的相关论坛的讨论,目前的泛型似乎并不是那么好用?
不过笔者相信在未来,随着Go语言的流行,上面提到的两个缺点只是暂时性地存在。