Rumah >pembangunan bahagian belakang >Golang >Peranan fungsi panggil balik dalam fungsi golang
Fungsi panggil balik dalam Go dihantar sebagai parameter dalam fungsi dan digunakan untuk melakukan tindakan tertentu selepas peristiwa atau keadaan tertentu berlaku, meningkatkan kebolehgunaan semula dan kebolehskalaan kod. Fungsi utama ialah: pemprosesan acara: sebagai pengendali panggilan balik pendengar acara, mengambil tindakan apabila peristiwa itu berlaku. Pemprosesan data: Pemprosesan dilakukan pada setiap elemen dalam kepingan atau peta. Pelaksanaan antara muka: Laksanakan antara muka melalui fungsi panggil balik dan sediakan gelagat kaedah antara muka.
Peranan fungsi panggil balik dalam fungsi dalam Go
Dalam Go, fungsi panggil balik merujuk kepada fungsi yang diluluskan sebagai parameter dalam fungsi untuk melaksanakan tindakan tertentu selepas peristiwa atau keadaan tertentu berlaku. Ia menyediakan cara untuk memisahkan logik perniagaan daripada logik fungsi utama, meningkatkan kebolehgunaan semula kod dan kebolehskalaan.
Syntax
func main() { // 定义一个回调函数 cb := func(i int) { fmt.Println("回调函数中的值:", i) } // 将回调函数传递给主函数 doSomething(cb) } func doSomething(f func(int)) { for i := 0; i < 10; i++ { // 调用回调函数 f(i) } }
Kes praktikal
Pemprosesan acara:
Dalam pemprosesan acara, fungsi panggil balik biasanya digunakan sebagai pengendali panggilan balik bagi pendengar acara untuk mengambil tindakan. Contohnya:
import ( "fmt" "github.com/go-vgo/robotgo" ) func main() { robotgo.EventHook(robotgo.KeyUp, func(e robotgo.Event) { fmt.Println("松开了一个按键:", e.Key) }) }
Pemprosesan data:
Fungsi panggil balik juga boleh digunakan untuk beroperasi pada data, seperti memproses setiap elemen dalam kepingan atau peta. Contohnya:
slice := []int{1, 2, 3, 4, 5} // 定义回调函数 cb := func(n int) { n++ } // 对切片中的每个元素应用回调函数 for i := range slice { cb(&slice[i]) } fmt.Println(slice) // 输出: [2 3 4 5 6]
Pelaksanaan antara muka:
Antara muka boleh dilaksanakan dengan mudah melalui fungsi panggil balik, yang menyediakan tingkah laku melaksanakan kaedah antara muka. Contohnya:
type MyInterface interface { DoSomething(func(int)) } type MyStruct struct{} func (s *MyStruct) DoSomething(cb func(int)) { for i := 0; i < 10; i++ { cb(i) } } func main() { s := &MyStruct{} s.DoSomething(func(i int) { fmt.Println(i) }) }
Atas ialah kandungan terperinci Peranan fungsi panggil balik dalam fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!