go 函數(shù)
類似JavaScript
函數(shù)聲明
func fuction_name([paramater_list]) [return_types] {
content
}
函數(shù)類型
- 無參無返回值函數(shù)
- 有一個參數(shù)的函數(shù)
- 有兩個參數(shù)的函數(shù)
- 有個返回值的函數(shù)
- 有多個返回值的函數(shù)
// 無參無返回
func printInfo() {
fmt.Println("printinfo")
}
// 有一個參數(shù)無返回
func printInfo1(a string) {
fmt.Println(a)
}
// 有2個參數(shù)無返回
func printInfo2(a string, b int) {
fmt.Println(a + string(b))
}
// 有多個參數(shù)和多個返回值
func addAndSub(a, b int) (int, int) {
return a + b, a - b
}
形式參數(shù)和實際參數(shù)
- 形式參數(shù):函數(shù)定義時,用來接受外部傳入數(shù)據(jù)的參數(shù),就是形式參數(shù)
- 實際參數(shù):調(diào)用函數(shù)時,傳給形參的實際數(shù)據(jù)叫做實際參數(shù)
- 可變參數(shù):函數(shù)定義時,參數(shù)名+…+類型表示可變參數(shù);一個函數(shù)有多個參數(shù)時,可變參數(shù)一定要放最后面,并且一個函數(shù)只會有一個可變參數(shù)。
參數(shù)傳遞
按數(shù)據(jù)存儲的特點分:
- 值類型的數(shù)據(jù):操作的是數(shù)據(jù)本身,int、string、bool、float64、array等(java中的基本類型)
- 引用類型的數(shù)據(jù):操作的是數(shù)據(jù)的地址slice、map、chan等(java中的封裝類型)
值傳遞:傳遞的類型是值類型數(shù)據(jù)
引用傳遞:傳遞的是引用類型的數(shù)據(jù)
defer 延遲函數(shù)
最后執(zhí)行,多個的情況下,先定義的后執(zhí)行,類似棧;多用于關閉文章來源:http://www.zghlxwxcb.cn/news/detail-674675.html
匿名函數(shù)
//匿名函數(shù)
f := func(a, b int) int {
return a + b
}
fmt.Println(f(1, 2))
fmt.Println(func(a, b int) int {
return a + b
}(3, 4))
回調(diào)函數(shù)
一個函數(shù)可以作為另一個函數(shù)的參數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-674675.html
func add(a, b int) int {
return a + b
}
func sub(a, b int) int {
return a - b
}
// 高階函數(shù),可以接受另一個函數(shù)作為參數(shù)
func op(a, b int, f func(c, d int) int) int {
return f(a, b)
}
func main() {
fmt.Println(op(3, 4, add))
fmt.Println(op(3, 4, sub))
}
閉包
到了這里,關于go-基礎-3-函數(shù)-記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!