匿名函數和閉包:匿名函數是無名稱的函數,即時建立用於執行特定任務。閉包是在匿名函數中可以存取外部變數的變數。在 Go 中,它們使用 func() 語法宣告。匿名函數和閉包可用於傳遞參數、儲存在變數中,或在實務上用於排序切片和事件處理。
Go 中的匿名函數與閉包
介紹
匿名函數是Go 中沒有明確命名並可以作為表達式的函數,它們thường 用於建立一次性任務或回呼。閉包是包含對外部變數的引用,即使函數返回後仍然存在的匿名函數。
匿名函數
使用func()
語法宣告匿名函數:
func() { fmt.Println("这是一个匿名函数") }
匿名函數可以作為參數傳遞給其他函數,也可以儲存在變數中:
func callAnon(anon func()) { anon() } var anonFunc = func() { fmt.Println("这是一个存储在变量中的匿名函数") }
閉包
#閉包允許匿名函數存取外部作用域中的變數。這些變數被稱為閉包變數。
var x = 10 anon := func() { fmt.Println(x) // 访问闭包变量 } anon() // 输出:10
實戰案例
type Employee struct { Name string Age int } func SortEmployeesByAge(employees []Employee) { sort.Slice(employees, func(i, j int) bool { return employees[i].Age < employees[j].Age }) }
type Button struct { onClick func() } func (b *Button) AddClickListener(f func()) { b.onClick = f }
開源專案和資源
以上是golang匿名函式和閉包的開源專案和資源分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!