go語言readline()返回值_Go語言極簡教程 - 第六篇 函式
阿新 • • 發佈:2021-01-30
技術標籤:go語言readline()返回值
Go語言既不像Java和C#那樣是面向物件的程式語言,也不像Lisp和Haskell那樣是純函式式的程式語言。在Go語言中,函式是“一等公民”。
函式宣告
func 函式名(引數列表) (返回值列表){函式體}
函式的定義以func關鍵字開頭,函式名與func關鍵字以空格分隔,函式名規範需符合Go語言中的識別符號規範。函式可以有零個或多個引數,也可以有零個或多個返回值。
示例
func add(a int,b int) int { return a + b }
函式特點
多值返回
函式允許返回多個值,多個返回值時需要將返回型別列表用()括起來。
不定引數
函式支援不定數目的形式引數,不定引數宣告使用...type格式。在函式體內部,不定引數是一個slice型別,所有對slice型別的操作同樣也適用於不定引數。
func printList(arr ...int){ for _, value := range arr { fmt.Println(value) }}
Go函式對不定引數有一定的約束:
- 函式只能有一個不定引數。
- 不定引數必須是函式形參列表的最後一個。
- 不定引數作為另一個含有不定引數的函式的實引數傳遞時需要通過“...”來解參傳遞
不支援引數預設值
Go語言為了追求顯式的表達,避免隱含,因此不支援引數預設值。
不支援函式過載
其它語言中,例如Java、C#都支援方法過載,即同一個類中有多個同名方法,但引數型別或引數數量不同。Go語言不支援同一個作用域範圍內多個函式名稱相同的情況,因此也不支援 函式過載。
匿名函式
上述的函式都是具名函式,與具名函式相對應的叫匿名函式。Go語言同樣支援匿名函式,匿名函式沒有函式名稱,可以在其它函式體內定義。
匿名函式用得最頻繁的應該是在defer延遲執行語句,示例如下:
func Inc() (value int){ defer func(){value++} return 9}
匿名函式還可以做為函式的返回值,示例如下:
package mainimport "fmt"func main () { // 呼叫高階函式add,完成3+2的計算 sum:=add(3)(2) fmt.Printf("3+2=%d