优雅golang
虽然我通常只尝试使用“黄油黄油”语言(例如php,python,java和C#),但我的上一个项目涉及以Google自己的旗舰Go语言编写的Google appengine网络应用。
作为一个总是对新语言感兴趣的多语种,我不禁对它如何用Go编码感到好奇,因此我开始了这个项目。 我使用Go进行编码的经验非常令人满足,我不禁与您分享。
Go将优雅与力量完美地融合在一起:对于以任何语言编写和维护应用程序,可读性都是非常重要的功能。 随着您的项目规模越来越大,这变得越来越重要。 实际上,您甚至准备牺牲通过C之类的低级语言获得的一些性能提升,以通过诸如Java和python这样的更具“可读性”的语言来实现开发人员的生产力。 这个因素部分地解释了为什么现在越来越少的程序用C / C ++编码,而越来越多的Java编码。 它还解释了python的最新流行,它是与同级Java和C ++相比的一种解释性且相对“低性能”的语言。
Go带来的好处是可读性和性能的完美结合。 是的,令人难以置信,但却是真实的! 它具有编译器和最强大的类型系统(如C / C ++),并结合了诸如python之类的动态语言的语法。 它甚至具有可媲美python的简单性。
从语法上讲,Go基于C ++,但是进行了许多修改,使其易于使用,例如:
- 没有分号(;)结束语句;
- 不需要像C(int i = 2;)这样的类型声明。 在Go中,类型会自动从值(i:= 2)中“猜测”。
- 没有包含大括号的必需语句,例如for和if。
这里的示例将有助于理解Go的不同之处和更好之处。 考虑一下C ++中的一个简单的平方根计算函数:
float Sqrt(float x) {
int z = 1.0;
for (int i= 0; i < 1000; i++) {
z -= (z*z - x) / (2 * z);
}
return z;
}
现在这里是用Go编写的相同函数:
package newmath
func Sqrt(x float64) float64 {
z := 1.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * z)
}
return z
}
您注意到Go的几件事了吗? 例如:
- 更少的笨拙性:不需要哈希,不需要在ifs / fors上花括号,也不需要分号来结束语句(某些人可能会争论分号,说它使您可以在一行上快速组合多个语句,但是您意识到少了多少这样创建的可读代码?)
- 动态性:: =是Go中的“短赋值”运算符,意味着您无需指定其类型。 与“ float z = 10;”相比,“ z:= 1.0”无疑更优雅。
- 高效的编译:尽管该语言具有动态性质,似乎暗示了它的解释性质,但Go的编译和运行效率与C / C ++等低级语言一样有效。
在Go上投入技能的另一个原因是Go得到了Google的支持 。 实际上,该语言本身就是Google的发明,并且Google已开始在其大多数项目(例如Google Appengine云托管服务)中实施该语言。
一场可能会间接为Go的成功铺平道路的争论是,迫在眉睫的Oracle与Google诉讼日益临近,Oracle指控谷歌错误地使用其受版权保护的Java API来实现其Android操作系统。 Oracle完全不可能摆脱它的要求,但是如果对此的不确定性持续更长的时间,那么谷歌很有可能会逐渐开始以Go语言构建其Android API,并逐渐放弃Java API。
现在我不是算命先生,但是从当前的定位来看,Go看起来不会像很快就会消失的语言。
您可以查看官方的Go文档,教程以及下面参考中提供的库和实用程序列表。 快乐学习Go语言!
注意:如果您正在运行基于Ubuntu的ubuntu之类的基于Linux的linux系统,则可以使用CLI安装golang:
sudo apt-get install gccgo
- http://golang.org/help/
- http://golang.org
- https://code.google.com/p/go-wiki/wiki/Projects
- http://golang.org/doc/faq
- https://developers.google.com/appengine/docs/go/
- https://zh.wikipedia.org/wiki/Go_%28programming_language%29
- https://zh.wikipedia.org/wiki/Oracle_v._Google
翻译自: https://www.javacodegeeks.com/2014/06/an-introduction-to-go-elegance-with-power-and-simplicity.html
优雅golang