Go语言作为强类型的编译型语言,灵活性上自然不如解析型语言。但是Go语言提供了Any类型(interface{})和强大的类型反射(reflect)能力,二者相结合,开发的灵活性上已经很接近解析型语言。在逻辑的动态调用方面,实现起来非常简单,这也是现在很多人喜欢学习和研究Go语言的原因。
今天小编就跟大家简单聊一聊Go语言的优势与劣势,希望大家能对Go语言有更加全面的认识和深入的了解。
可直接编译成机器码:不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
静态类型语言,但是有动态语言的感觉:静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。
语言层面支持并发:这几乎是Go语言最大的特色,天生的支持并发。Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。
内置runtime,支持垃圾回收:虽然目前来说GC不算完美,但是足以应付我们所能遇到的大多数情况,
简单易学:Go语言的作者都有C的基因,那么Go自然而然就有了C的基因。Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。
内置强大的工具:Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难。
内嵌C支持:Go里面也可以直接包含C代码,利用现有的丰富的C库。
劣势一:缺少框架
Go语言没有一个主要的框架,如Ruby的Rails框架、Python的Django 框架或PHP的Laravel,这是Go语言社区经常激烈讨论的问题。
劣势二:错误处理
Go语言通过函数和预期的调用代码简单地返回错误而帮助开发者处理编译报错。虽然这种方法是有效的,但很容易丢失错误发生的范围,因此我们也很难向用户提供有意义的错误信息。另一个问题是我们可能会忘记处理报错。诸如 errcheck和megacheck等静态分析工具可以避免出现这些失误。虽然这些解决方案十分有效,但可能并不是那么正确的方法。
劣势三:软件包管理
Go语言的软件包管理绝对不是完美的。默认情况下,它没有办法制定特定版本的依赖库,也无法创建可复写的builds。相比之下Python、Node和Ruby 都有更好的软件包管理系统。然而通过正确的工具,Go 语言的软件包管理也可以表现得不错。
觉得文章内容有用欢迎大家收藏及转发,获取更多编程干货也欢迎大家关注我的头条号。
页面更新:2024-05-13
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号