最近学go语言的小结

erlanp · · 1343 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

因为单位业务需要(据说是http://www.oschina.net/p/docker 这个方向),最近开始学go语言。google做这门语言的目的在于代替部分C/C++在服务器端开发,这门语言是以C为主干,模仿java,javascript及C++的基础上,做了些微创新。个人感觉就是强类型语言版的javascript++。
    1、文件结构,和C/C++一样的主文件。主函数如main可以写在主文件前面,而全局变量及函数写在后面,C/C++这样做要专门的声明,这个功能php也有,不过应该是php4以后的事。


2、变量的作用域和javascript类似,因而很方便地实现了闭包。


3、模块及结构体的变量及函数没有显式声明public及private,而是第一个字母大写就是public,小写反之。模块分公私不知道有什么用;结构体/对象这样搞,以后要把private改成public就有点不方便——不过可以新加一两个public函数调用private的变量或函数。


4、变量必须声明后才能使用,且声明后默认必须使用;强制性的编码规范。这些都有利于写出健壮的程序,缺点估计只是影响新手学习这一点。


5、指针:
C语言的指针--,另外使用了C++的“&”这个符号表示引用。除了使用结构体之外,个人以为要少用指针,多用标准库。


6、泛型:
暂时用接口实现泛型,运行效率比较低下。


7、模板: 这个应该是仿C++的模板。模板是一种动态生成代码的方式,虽然不如一些语言的宏那样方便,但多数情况下够用吧,我想。实际上我没用过go语言这个功能。


8、并发编程:
在学,没有发言权。


9、语法
对于学过C\C++ Java C# php javascrpt中任何一门的人来说,学习起来应该是毫无压力的。


10、对象
对象由结构体实现,所以没有构造和析构函数的概念。结构体的匿名成员实现继承,可以多继承,但遇到一样的变量或方法就碰掉了。和C语言的面向对象类似,但更易实现。


11、运行效率
单线程比java慢,估计现在还是实验性的,为方便以后加特性,所以没做什么优化。据说要放弃C,要像java一样搞个虚拟机,估计这样效率还有提升的空间。


优点:
开发团队比较强大:成员中有一位C语言及UNIX的创始人——C语言和Ruby据说是坑最多的语言。


基本没有历史负担,暂时没看到有什么坑。


够简单,比C语言好学好配(windows上好配,linux上没java好配——sudo要靠网速,中国的网速因公司不同而不同)好用,所以对于学校来说适合做强类型语言的入门语言——那些有C语言基础的老师也好学,要大学老师去学erlang,这不可能。


缺点:


热更新和热部署的机能不成熟:
有笑话说java程序编译的时间就是程序员喝咖啡的时间。热部署还无所谓,热更新是影响开发效率的事情。虽然go语言编译速度比java快得多,但项目大了一样慢。开发web程序的话,个人觉得还是php这种改了后直接F5一下的比较爽。


erlang和node.js是golang的主要竞争对手。erlang及node.js(javascript和c++)都是年头久远的语言,热更新和热部署都解决地不错。

有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:erlanp

查看原文:最近学go语言的小结

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1343 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传