C/C 的人转Go都说很爽,Java转Go的人,觉得有时候写的很别扭,为啥?Go 和 Java 都是 C 系语言,语法方面,存在很多相似的地方。Go 语言从 C 语言继承了很多,同时也抛弃了不少,改进了不少
C/C 的人转Go都说很爽,Java转Go的人,觉得有时候写的很别扭,为啥?
Go 和 Java 都是 C 系语言,语法方面,存在很多相似的地方。Go 语言从 C 语言继承了很多,同时也抛弃了不少,改进了不少。Go 从 C 继承了哪些重要特性,同时改进了哪些?
Go 跟 C 语言一样,语法足够简单。一些基础的语法,跟其他 C 系语言类似,从 C 继承了下来。和其他很多 C 系{繁体:係}语言不一样的地方是,Go 继承了 struct,而且,不像 C /Java,还额(é)外提供 class。所以 C 语言的人,写 Go 会有很亲切感。
更重要的是,Go 对{pinyin:duì}于 C 语言(yán)做了很多改进,而且这些改进很多由于历史原因导致的,作为一门全新的语言,没有历史包袱,完全可以在设计上做出改进。主【读:zhǔ】要的改进有:
1. 跟 C 一样有指针,但不允许进行指针运算,提升了安全性和易用性,很多 C 语言的开发者,对指(拼音:zhǐ)针是《练:shì》有点头疼的,但接触 Go,会(繁体:會)发现很容易使用指针;
2. 有垃圾回收机制,从繁琐易错的内存分配和释放中解[练:jiě]脱出来;
3. 在 struct(类型)的基础{练:chǔ}上,引入rù 方法的概{pinyin:gài}念,相比 C 语言更利于结构化和管理;
4. 更《练:gèng》高级的数据结构原始支持,比如动态数组(slice)、string、map 等;
5. 丰富的标准库支持,比如 Go 对于网络编程,标准(繁:準)库有了很大的支持,写起来会很简单,相{读:xiāng}对来说《繁:說》 C 使用第三方库,易用性也差一些;
6.澳门新葡京 一定程度上支持面向对象《练:xiàng》编程;
7. 强大的工具[练:jù]链,编译速度超级快;
8. import 机{练:jī}制改进;
9. 类型定义避免歧义《繁:義》,比如 `var p, q #2Aint`;
10. 更强大的 IDE 支持{读:chí};
11. 更强大、易用的并发支持(读:chí);
...
以上种种,会让澳门巴黎人 C 语(繁体:語)言的开发者爱上 Go 语言。
对于 C ,因为其复杂性,我想面对 Go 这样简【繁体:簡】单、性能不错、C 系的语言,应该没有免{练:miǎn}疫力吧~
Java 为什么有时候会觉得 Go 别扭?
Java 虽然也是 C 系语言,但更多是面向对象的功能。很多设计模式的书,都是用 Java 语言来描述的。而 Go 语言,并非纯面向对{练:duì}象,只是一定程度上,支持了部分面向对象的特性,不少面向对象的功能缺失,这会让习惯 Java 的开发者感【读:gǎn】觉别扭。
1.澳门新葡京 没有(拼音:yǒu)类型层次
澳门新葡京2. 接口(pinyin:kǒu)隐式实现
3. 没有真正意义的继承,因此也没有基{pinyin:jī}于类型继承的多态
4. 没有方法重载,而且还没有泛型
5. 可见性问题[拼音:tí]
6. 没有 Spring 这样一统[繁体:統]天下的框架
...
另外,Go 里面的一些特性,Java 开发者可能也不太习惯(繁体:慣),比如:有指针、类《繁体:類》型足够细分(比如各【读:gè】种 int)等。
我认为还有一个很重要的是,Go 相对于 Java,对计算机底层基澳门伦敦人础的知识要求会更高,这会让一些人感(练:gǎn)觉不适应。
但我还是要说一句,Java 开《繁体:開》发者们,Go 还是值得你学习的。这里附上之前回(繁:迴)复的一个问答:《如何优雅得向Java程序员介绍go语言?》https://www.wukong.com/question/6681852965965267212/
总结
其实很多东西还是习惯问题,但有时候,我们需要尝试打破习惯,用另外的视角看待这个世界。对于编程语言来说,我们在使用一门语言时,要慢慢学会用该语言的方式来思考、解决问题,虽然这个过程可能是比较痛苦,但这是锻炼自己思维、提升自己很好地方式。本文链接:http://10.21taiyang.com/Biological-SciencesScience/12642297.html
设(拼音:shè)计字体创意转载请注明出处来源