前兩天我說過為了學習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雖然簡潔,但它並不是一門優秀的編程語言。
