Golang Programming Tips

Go語言用起來感受好奇怪。也許是他在語法上雜糅了許多其餘語言如C、Python、Perl、Erlang、Haskell等語言的結果。
首先是它的變量聲明,他把變量類型放在變量名以後,如 var a int;數組

它的if支持初始化變量,如:if comma, ok := fuckU.(int); ok {...}; 其中.(int)是類型判斷,.(type)返回其類型。app

它的內嵌函數中有make和append,make思路很像C語言中的malloc,返回值是一個slice這樣的東西,算是動態數組這樣的概念吧。

而append函數和其餘高級語言的append感受很不同,它是內嵌函數而不是任何一個類的屬性,因此書寫方式是非常append()還有iota按行號自增的奇怪東西。

還有就是屌炸天的switch。switch後加了變量名就和Python的switch大同小異,不加的話就會成爲另外一種if-else if-else,雖然不怎麼習慣不過不得不說十分方便。

接下來就是它的函數。Golang的函數聲明是這樣的func (p mytype) funcname(q i n t ) (r,s int ) { return 0,0 };
(p mytype)是使函數能夠綁定到特定的類型上。這叫作接收者。有接收者的函數被稱做方法。
(r,s int)是返回值,注意這裏是有變量名的,也就是說在函數內部能夠調用這些名字,固然,只聲明返回類型也能夠。

然而匿名函數的命名卻不同:func(a type)(b type){}(9); 而花括號後面的小括號是必須的,其做用是爲參數賦值。可是當匿名函數做爲值的時候不須要後面的括號:a := func(){}; a();這樣一來,匿名函數的命名方式看起來也有幾分科學性了。

與C語言不一樣的是,在print中,%T打印的是對應值的類型。

因爲Golang能夠聲明多個返回值,因此差錯處理機制也是創建在這之上的。不少函數都是擁有兩個返回值,其中一個就是Err,Err類型的默認值是nil。

在Golang的變量初始化的時候,會賦值爲0,而Err和指針是賦值爲nil。

唔,還有Golang不支持逗號表達式,只支持平行命名法,如a ,b = 1, 2; 而不能寫成a=1, b=2。

一個包中的可導出函數首字母大寫,私有函數首字母小寫。(屌炸)

與Python一類的腳本語言不一樣,Golang的Map在初始化時須要聲明key的類型。

特別點名一下Golang的哲學所衍生出來的東西。Golang的哲學是用最少的代碼作最多的事。除了多值返回這個特色之外,在switch中能夠用到一個叫作fallthough的東西,case下能夠不寫東西而只寫fallthrough,當發生匹配以後會穿到下一個case中,進行匹配,即匹配失敗後自動向下嘗試。
還有一個就是defer,延遲代碼。便是在defer後的函數會在return以前被調用。函數

相關文章
相關標籤/搜索