Bahasa Go menyediakan jenis func untuk penciptaan dinamik dan pemusnahan nilai fungsi: Penciptaan: Gunakan kata kunci func untuk mencipta jenis fungsi secara dinamik, seperti f := func(x int) int { return x * x }. Panggilan: Hantar nilai fungsi sebagai parameter kepada fungsi lain, seperti panggilan(f, 5). Pemusnahan: Nilai fungsi dimusnahkan apabila ia keluar dari skop, serupa dengan pembolehubah.
Bahasa Go menyediakan jenis func
terbina dalam, yang membolehkan kami mencipta dan menggunakan nilai fungsi. func
类型,它允许我们创建和使用函数值。
可以使用 func
关键字动态创建函数类型:
f := func(x int) int { return x * x }
以上代码创建了一个函数类型,它接受一个整数参数并返回一个整数。
可以通过将函数值作为参数传递给另一个函数来调用它:
func call(f func(int) int, x int) { fmt.Println(f(x)) } call(f, 5)
函数值的生命周期与变量相同,当它们超出作用域时,它们将被销毁。
在 goroutine 中创建回调函数来处理结果是一种常见场景:
func main() { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() resultCh := make(chan int) // 创建回调函数 f := func(result int) { resultCh <- result } go func() { // 模拟耗时的处理 time.Sleep(5 * time.Second) result := 42 f(result) }() select { case result := <-resultCh: fmt.Println("Received result:", result) case <-ctx.Done(): fmt.Println("Timed out waiting for result") } }
在该示例中,动态创建的回调函数 f
func
untuk mencipta jenis fungsi secara dinamik: 🎜rrreee🎜Kod di atas mencipta jenis fungsi yang menerima parameter integer dan mengembalikan integer. 🎜f code yang dibuat secara dinamik > digunakan untuk memberitahu goroutine utama hasil selepas goroutine selesai diproses. 🎜
Atas ialah kandungan terperinci Mekanisme penciptaan dan pemusnahan dinamik jenis fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!