Dalam bahasa Go, penuding fungsi menghala ke alamat entri fungsi dan boleh disimpan dalam pembolehubah atau dihantar ke fungsi. Menggunakan penunjuk fungsi membantu memisahkan kod yang memanggil fungsi daripada kod yang melaksanakannya. Ia boleh digunakan untuk menyimpan fungsi, lulus fungsi, atau mengembalikan fungsi. Satu senario aplikasi adalah untuk mencipta pasangan nilai kunci boleh diisih, menentukan peraturan pengisihan tersuai melalui penunjuk fungsi dan mengisih pasangan nilai kunci dalam tertib menaik mengikut nilai.
Penunjuk fungsi dalam bahasa Go
Penunjuk fungsi ialah penuding kepada fungsi. Dalam Go, fungsi ialah nilai kelas pertama, jadi ia boleh disimpan dalam pembolehubah, dihantar ke fungsi atau dikembalikan daripada fungsi. Kelebihan utama menggunakan penunjuk fungsi ialah ia memisahkan kod yang memanggil fungsi daripada kod yang melaksanakan fungsi tersebut.
Intipati penuding fungsi
Penunjuk fungsi pada asasnya ialah penuding yang menunjuk ke alamat kemasukan fungsi. Dalam bahasa Go, jenis penuding fungsi ialah func(*args)(*result)
, dengan: func(*args)(*result)
,其中:
*args
是函数参数类型的指针*result
是函数返回类型的值或指针函数指针的用法
1. 存储函数
func add(a, b int) int { return a + b } func main() { // 将 add 函数存储在变量 f 中 f := add // 通过 f 调用 add 函数 fmt.Println(f(1, 2)) // 输出:3 }
2. 传递给函数
func apply(f func(int) int, arg int) int { return f(arg) } func main() { // 将 add 函数传递给 apply 函数 result := apply(add, 10) fmt.Println(result) // 输出:11 }
3. 返回函数
func getAdder(val int) func(int) int { return func(arg int) int { return val + arg } } func main() { // 获得一个返回 10 加数的函数 add10 := getAdder(10) // 使用 add10 函数 fmt.Println(add10(20)) // 输出:30 }
实战案例:创建可排序键值对的函数类型
以下是一个使用函数指针创建可排序键值对的 Go 语言程序:
type kv struct { key string val int } func (kv *kv) SortByValue() { sort.Slice(kv, func(i, j int) bool { return kv[i].val < kv[j].val }) } func main() { kvList := []*kv{ {"key1", 10}, {"key2", 5}, {"key3", 15}, } kvList.SortByValue() for _, kv := range kvList { fmt.Println(kv.key, kv.val) } }
输出:
key2 5 key1 10 key3 15
在这个例子中,SortByValue
函数指针定义了一个自定义排序规则,将 kv
*args
ialah parameter fungsi taip PenunjukSortByValue
mentakrifkan peraturan pengisihan tersuai yang mengisih elemen dalam kepingan kv
mengikut nilai Isih dalam tertib menaik. 🎜Atas ialah kandungan terperinci Intipati dan penggunaan penunjuk fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!