学习go语言的第一天

Go语言优势:

•静态语言,强类型。静态编译能帮我们检查出来大量的错误,go的强类型甚至变态到不支持隐式的类型转换。

•gofmt,应该这是我知道的第一个官方提供统一格式化代码工具的语言了。有了gofmt,大家的代码长一个样了,也就没有花括号到底放到结尾还是新开一行这种蛋疼的代码风格讨论了。因为大家的代码风格一样,所以看go的代码很容易。

•天生的并行支持,因为goroutine以及channel,用go写分布式应用,写并发程序异常的容易。没有了蛋疼的callback导致的代码逻辑割裂,代码逻辑都是顺序的。 •性能,go的性能可能赶不上c,c++以及openresty,但真的也挺强悍的。在我们的项目中,现在单机就部署了一个go的进程,就完全能够胜任以前200个python进程干的事情,而且CPU和MEM占用更低。

•运维部署,直接编译成二进制,扔到服务器上面就成,比python需要安装一堆的环境那是简单的太多了。当然,如果有cgo,我们也需要将对应的动态库给扔过去。

•开发效率,虽然go是静态语言,但我个人感觉开发效率真的挺高,直觉上面跟python不相上下。对于我个人来说,最好的例子就是我用go快速开发了非常多的开源组件,譬如ledisdb,go-mysql等,而这些最开始的版本都是在很短的时间里面完成的。

需要注意的地方:

1.整型数据的溢出; 一个int8型整数的最大值是127,如果在加上一就是-128. 2.特殊类型:复数: 复数实际上由两个浮点数构成,一个表示实部,一个表示虚

部。 3.Go语言规定,函数,控制结构等的左大括号“{”必须和函数声明

或控制结构放在同一行。如果将左大括号放在函数声明,控制语句的

下一行,编译器会在左大括号的前方自动加一个大括号,可能导致程

序异常。 4.Go对多语言的支持。 5.函数名首字母为小写,即为private 函数名首字母为大写,即为public