Go語(yǔ)言提供了一種稱為匿名函數(shù)的特殊函數(shù)。匿名函數(shù)是不包含任何名稱的函數(shù)。當(dāng)您要?jiǎng)?chuàng)建內(nèi)聯(lián)函數(shù)時(shí),此函數(shù)很有用。在Go語(yǔ)言中,匿名函數(shù)可以形成閉包。匿名函數(shù)也稱為函數(shù)字面量。
語(yǔ)法:
func(parameter_list) return_type {
//代碼
//如果給定return_type,則使用return語(yǔ)句
//如果未提供return_type,則不
//使用return語(yǔ)句
return
}()package main
import "fmt"
func main() {
//匿名函數(shù)
func(){
fmt.Println("Welcome! to (cainiaoplus.com)")
}()
}輸出:
Welcome! to (cainiaoplus.com)
重要事項(xiàng):
在Go語(yǔ)言中,可以將匿名函數(shù)分配給變量。將函數(shù)分配給變量時(shí),變量的類型就是函數(shù)類型,您可以像調(diào)用函數(shù)一樣調(diào)用該變量,如以下示例所示。
package main
import "fmt"
func main() {
// 分配一個(gè)匿名函數(shù)到一個(gè)變量
value := func(){
fmt.Println("Welcome! to (cainiaoplus.com)")
}
value()
}輸出:
Welcome! to (cainiaoplus.com)
您也可以在匿名函數(shù)中傳遞參數(shù)。
package main
import "fmt"
func main() {
//在匿名函數(shù)傳遞參數(shù)
func(ele string){
fmt.Println(ele)
}("nhooo")
}輸出:
nhooo
您還可以將匿名函數(shù)作為參數(shù)傳遞給其他函數(shù)。
package main
import "fmt"
//匿名函數(shù)作為參數(shù)傳遞
func GFG(i func(p, q string)string){
fmt.Println(i ("Geeks", "for"))
}
func main() {
value:= func(p, q string) string{
return p + q + "Geeks"
}
GFG(value)
}輸出:
nhooo
您還可以從另一個(gè)函數(shù)返回匿名函數(shù)。
package main
import "fmt"
//返回匿名函數(shù)
func GFG() func(i, j string) string{
myf := func(i, j string)string{
return i + j + "nhooo"
}
return myf
}
func main() {
value := GFG()
fmt.Println(value("Welcome ", "to "))
}輸出:
Welcome to nhooo