這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
一、概念
函數可以讓我們將一個語句序列打包為一個單元,然後可以從程式中其它地方多次調用。函數的機制可以讓我們將一個大的工作分解為小的任務,這樣的小任務可以讓不同程式員在不同時間、不同地方獨立完成。一個函數同時對使用者隱藏了其實現細節。由於這些因素,對於任何程式設計語言來說,函數都是一個至關重要的部分。
二、函數的聲明及使用
package mainimport ( "fmt")func main() { say("hello")}func say(info string) { fmt.Println("Say:", info)}
三、多傳回值函數
package mainimport ( "fmt")func main() { id, name := get() fmt.Println(id, name)}func get() (int, string) { return 1, "frod"}
四、匿名函數
package mainimport ( "fmt")func main() { // 傳遞一個匿名函數 res := sum(func() (int, int) { return 1, 2 }) fmt.Println(res)}// 匿名函數當作函數的參數func sum(f func() (int, int)) int { a, b := f() return a + b}
五、匿名函數-閉包函數
package mainimport ( "fmt")func main() { // sum() 內部是一個閉包函數, 閉包函數是立即執行的 res := sum(func() (int, int) { return 1, 2 }()) fmt.Println(res)}func sum(a, b int) int { return a + b}
六、匿名函數-嵌套,意義不是特別大,只是為了基礎學習
package mainimport ( "fmt")func main() { res := func() int { a, b := func() (int, int) { return 1, 2 }() return a + b }() fmt.Println(res)}
七、函數-可變參數
package mainimport ( "fmt")func main() { fmt.Println(sum(1, 2, 3, 4, 5, 6))}func sum(vals ...int) int { var sum int for v := range vals { sum += v } return sum}