Di Java, seseorang boleh menghantar fungsi sebagai parameter menggunakan kelas dalaman tanpa nama, walaupun ini boleh menyusahkan. Go menawarkan pendekatan yang lebih mudah untuk perkara ini dengan jenis fungsi dan penutupan.
Pertimbangkan kod Go berikut yang melaksanakan jenis fungsi tukar yang mengambil integer dan mengembalikan nilai rentetan:
type convert func(int) string
Fungsi nilai memenuhi jenis penukaran dengan mengembalikan perwakilan rentetan bagi integer:
func value(x int) string { return fmt.Sprintf("%v", x) }
The fungsi quote123 menggunakan fungsi tukar untuk menukar 123 kepada rentetan dan memetik hasilnya:
func quote123(fn convert) string { return fmt.Sprintf("%q", fn(123)) }
Dalam fungsi utama, fungsi tukar digunakan dengan pelaksanaan berlainan jenis tukar, termasuk fungsi tanpa nama:
result := quote123(func(x int) string { return fmt.Sprintf("%b", x) })
Jenis penukar memastikan keselamatan jenis, memerlukan semua fungsi yang dihantar kepadanya melaksanakan jenis penukaran. Ini membantu mengekalkan ketepatan kod dan mengelakkan ralat jenis.
Atas ialah kandungan terperinci Bagaimanakah Go Mendayakan Fungsi Lulus sebagai Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!