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