我眼中的go的語法特點

冷侃發表於2014-07-23

因為基本從c#/javascript/c/c++/python/lua/action script,一路走來,對所有的C系列的語法既熟悉又有好感;

那在看語言的時候肯定會與C系列的東西進行類比,那就總結一下go語言與C比的特別之處

  • 宣告變數常量及函式型別時放在名稱的後面,這點有點類似as3,只不過把as3宣告變數時的那冒號去掉而已
  • 只能定義結構體及函式,沒有類這種東西,就是說,函式和成員變數不能放一塊,這一點和C一樣
  • if及for等子句的條件,不需要使用括弧包起來,這點和python2一樣
  • 迴圈子句只用for,但是這個for比較特殊,可以使用裡面有兩個分號,或者直接什麼條件都不帶變成while(true)的
  • 跟python一樣,函式可以使用多返回值,宣告變數及賦值可以一行多個
  • 跟python一樣,很多系統函式實現基本一致的功能,len獲得陣列、字元符的長度,range可以獲得迴圈的迭代器,make可以產生map例項。如m := make(map[string]int)
  • 跟python一樣,有個delete,只不過是這麼用的delete(m, "Answer")
  • 跟python一樣,內建了字串、陣列、map
  • 更特別的是這個內建的map居然是個std::multimap,調一次相同key,再調一次就會變成下面那個

相關文章