Go入門(五)-函數

7 函數
7.1 Go的函數,通過關鍵字來 func 聲明,可以有一個或者多個參數,每個參數後面帶有類型,通過","分隔,可以返回多個值,使用關鍵字 return 返回值,格式如下;
func funcName(input1 type1, input2 type2) (output1 type1, output2 type2) {
//這裏是處理邏輯代碼
//返回多個值
return value1, value2
}
7.2 對於input,如果類型相同,只需聲明一個類型,同理對於返回值,如果類型相同,只需返回一個類型;

7.3 返回值可以省略變量名,只寫類型;

7.4 命名返回值的好處是文檔可讀性更好,見名知義,並且在return時 不必指定返回變量;

7.5 支持變參輸入,輸入的參數個數不確定,入參是一個slice類型,變參必須放在最後;

7.6 值傳遞和指針傳遞
Go使用的是值傳遞,當我們傳遞一個參數value到被調用的函數中時,其實只是這個值的一份copy,指針傳遞也是值傳遞,當然這個時候傳遞的值是地址,程序要通過改變的是這個地址指向的值,就能改變value



7.7 大多數情況,我們並不需要保留一份copy,而是希望函數對入參有所作爲,改變入參,所以傳遞指針比較合適,而且指針傳遞的開銷比較小,只有8bytes;
7.8 defer是一個延時語句,類似java的try-catch-finally的finally,會在函數退出前調用 defer 後指定的動作,函數體內支持多個defer,執行順序爲後進先出,最後面定義的會最先執行;


輸出結果爲:321
7.9 函數也是一種變量,可以作爲值,類型來傳遞,使用關鍵字type,格式如下:
type typeName func(input1 inputType1 , input2 inputType2 [, ...]) (result1 resultType1 [, ...])
函數類型和實現了該類型的函數,類似java的接口類和實現類的關係,具體的應用也類似,看完實例你就明白了:

輸出結果如下:
false
false
value :19 is greater than 10
true
value :8 is less than 10
true
value :9 is less than 10
true
false
7.10 main函數和init函數
這兩個函數名是Go保留的函數,init函數可以在所有的pakage中定義,而main只能在mainpackage中定義,具體的調用順序如下:

Have fun!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章