太原软件编程开发go语言的不足之处

2019/6/18 11:04:29 作者:Lawrence发布企业:太原达内科技有限公司[打印]

说起go语言相信大家应该都不陌生吧。我们在前几期的文章中就曾经给大家介绍过go语言的优势以及常见的一些学习方法,但是我们也都知道,没有任何一种编程语言是没有劣势的,所以今天我们就来聊聊go语言的不足之处。

语言使用字母大小写来决定标识符的可见性

以小写字母开头的标识符在包内可见,以大写字母开头的标识符是公开的。这样做可能是为了省掉public和private关键字,但是,字母大写已经被用来表示其他意思——比如类名的字母是大写的,常量完全是大写的。对于我来说,使用完全小写的字母来定义全局常量实在是有点不适应。

2.在Go语言里,结构体不会显式声明它实现了哪些接口,而是通过匹配方法签名来辨别

这种设计犯了一个根本性的错误:它假设两个方法如果有相同的签名就表示有相同的契约。在Java中,如果一个类实现了一个接口,它会告诉编译器它实现了接口的所有方法。如果一个方法返回布尔类型,接口的注释会写清楚它的值代表什么意思(比如,true表示成功,false表示失败)。

语言中没有异常,而是通过多个返回值来返回错误

语言里有很多“神奇”的行为

例如,如果我把源码文件命名为,在Mac上就编译不过去。而如果我凑巧把一个函数名定义成init(),在运行时它会自动被调用。这些都是“约定俗成而非配置(conventionoverconfiguration)”的表现。对于小型项目来说,这些都无关键要,但在大型项目中,它们会给你带来大麻烦。

5.因为Go语言的字母大写约定,很容易出现很多相同的标识符

比如,一些包名、结构体名和变量名都叫作item。在Java中,包名使用了全限定名,类名字母是大写的。有时候,我觉得Go代码不好阅读,因为可能无法一下子看出一个标识符的作用域是怎样的。

6.要进行Go代码自动生成并不容易

编译器太过敏感,一些未被使用的导入和变量也会导致构建失败。在生成大型文件时,它在一开始可能并不知道需要导入那些包,而且可能会出现包名冲突,这种冲突也不好处理,因为即使你知道包名,却不知道导入的符号来自哪里。即使你知道,生成的代码为了避免冲突也会强制使用别名。在Java中,这些问题可以通过使用全限定类名来解决,而在Go语言中是不能这样做的。

作者:Lawrence

节选:infoq

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。


关键字:太原达内,编程开发,编程语言
免责声明:以上所展示的信息由网友自行发布,内容的真实性、准确性和合法性由发布者负责。行业信息网对此不承担任何保证责任。任何单位或个人如对以上内容有权利主张(包括但不限于侵犯著作权、商业信誉等),请与我们联系并出示相关证据,我们将按国家相关法规即时移除。

其他新闻

关于我们 | 服务条款 | 网站指南 | 免责声明 | 友情链接 | 给我们留言
红盾
COPYRIGHT @ 2001-2017 CNlinfo.net ALL RIGHTS RESERVED
深圳市信息行业协会商务网站 运营商:深圳市兴讯信息技术有限公司 粤ICP备:05039908
营业执照