前两天我说过为了学习go语言去学习了一遍python,当我完成了python的学习后,昨天中午就去学习了go语言。以下简称之为golang。
我用的操作系统是windows xp,golang对xp还提供支持,但是我在学习python3时,3.5版本的python已经不给xp提供支持了。我在http://gobyexample.com学习了golang的相关代码,我不知道里面的语法全不全。其次,golang的本质是一种静态类型的语言,但它在编写时又可以写成动态类型语言的声明,这可以说是一次静态语言的革命。
下面我来谈谈我对golang的感受。
第一,我感觉golang的语法确实像python,使用起来令人感觉舒适,方便快捷。例如:
// 声明 --类python a := 10 // a在编译时刻会被自动转换成int类型 // 语法 -- 类C for i := 0; i < 10; i++ { // do something here }
第二,golang的自由度高、代码简洁,例如:
// 声明一个int类型的变量有3种方法 var v = 10 var v int = 10 v := 10 // 声明一个常量则有2种方法 const v = 10 const v int = 10 // 循环的用法 -- for就行了 for True { // 类似C中的while循环 } for { // 上例的 for True缩写版 } for i := 0; i < 10; i++ { // 类似C中的for循环 }
第三,我认为golang语言的目的性不强,严格的说是一个令人感到乱糟糟的语言,看下列代码:
// golang循环示例 for i := 0; i < 10; i++ { } /* * 初看到上面的代码,令我们觉得没有什么不对的,但是学习之后,才会知道端倪。 * 问题1、其中的 i++不能改成++i,golang中不支持++i这样的操作符 * 问题2、大分号不能另起一行 * 问题3、若循环中只有一行代码,"{" 、"}"不能不写 */ // golang简单示 do while循环示例 -- 用for 实现 var i = 0 for { // do something there if i >= 10 { break } i++ } /* * 与上面的说法一样,不学时不知道水有多深 * 问题1、支持i++操作符但是不支持写成这样 if i++ > 10 * 问题2、不如do while循环简洁、好看 */
以上的例子说明了golang又还是一个自由的语言!不仅如此,golang还不能容纳多余的语句:
pacakge main import "fmt" import "math" func main() { var i int = 9 var j int = 10 fmt.Println(i) } /* * 编译时报错:imported and not used: "j" * imported and not used: "math" * 除此之外,golang还要变态地与packge xxx开头,而且main()函数中不能放置任一个参数和不能声明任何返回值和返回任何的值。 */
golang最终给我的感受是一团糟,至此,我认为golang虽然简洁,但它并不是一门优秀的编程语言。