匿名函數(shù)在 go 中沒(méi)有名稱(chēng),可作為參數(shù)傳遞給其他函數(shù)。用法:語(yǔ)法:func([參數(shù)列表]) ([返回值列表]) { // 函數(shù)體 }可省略參數(shù)和返回值。可直接傳遞給其他函數(shù)。實(shí)戰(zhàn)案例:排序列表時(shí),可通過(guò)匿名函數(shù)比較元素。
匿名函數(shù)的用法
在 Go 語(yǔ)言中,匿名函數(shù)是一種特殊類(lèi)型的函數(shù),它沒(méi)有名稱(chēng),并且通常用于作為其他函數(shù)的參數(shù)。它們可以出現(xiàn)在使用函數(shù)指針的地方,例如回調(diào)函數(shù)。
用法
匿名函數(shù)的語(yǔ)法如下:
func([參數(shù)列表]) ([返回值列表]) { // 函數(shù)體 }
登錄后復(fù)制
其中 [參數(shù)列表]
和 [返回值列表]
是可選的。省略時(shí),匿名函數(shù)沒(méi)有參數(shù)或返回值。
示例
我們以一個(gè)計(jì)算兩個(gè)數(shù)之和的匿名函數(shù)為例:
sum := func(a, b int) int { return a + b }
登錄后復(fù)制
我們還可以將匿名函數(shù)直接傳遞給其他函數(shù),如下所示:
otherFunction(func(i int) bool { return i % 2 == 0 })
登錄后復(fù)制
這個(gè)匿名的 bool
函數(shù)檢查一個(gè)整數(shù)是否為偶數(shù)。
實(shí)戰(zhàn)案例
讓我們考慮一個(gè)排序字符串列表的示例:
// 比較兩個(gè)字符串的函數(shù) compareStrings := func(a, b string) int { return strings.Compare(a, b) } // 使用 sort.Slice 對(duì)字符串列表進(jìn)行排序 strings := []string{"apple", "banana", "cherry"} sort.Slice(strings, compareStrings) fmt.Print(strings) // [apple banana cherry]
登錄后復(fù)制
在上面的代碼中,我們聲明了一個(gè)匿名函數(shù) compareStrings
,它用于比較兩個(gè)字符串。我們?nèi)缓髮⑦@個(gè)函數(shù)傳遞給了 sort.Slice
函數(shù),它使用匿名函數(shù)對(duì)字符串列表進(jìn)行排序。
匿名函數(shù)在 Go 中非常有用,它們可以使代碼更簡(jiǎn)潔、更易于閱讀。