Dalam Go, dua kaedah penukaran jenis fungsi ialah penukaran jenis dan penyesuai fungsi. Penukaran jenis berprestasi lebih baik pada 400 nanosaat, manakala penyesuai fungsi berprestasi lebih teruk pada 600 nanosaat.
Penukaran jenis fungsi merujuk kepada menukar satu jenis fungsi kepada jenis fungsi yang lain. Dalam Go, anda boleh menggunakan jenis penukaran
atau func adapter
untuk penukaran jenis fungsi. type conversion
或 func adapter
来进行函数类型转换。
package main import "fmt" func main() { // 定义一个返回字符串的函数 getString := func() string { return "Hello, World!" } // 将 getString 转换为返回 int 的函数 getInt := func() int { return len(getString()) } fmt.Println(getInt()) // 输出 13 }
package main import "fmt" type StringToInt func() int func getStringToIntAdapter(getString func() string) StringToInt { return func() int { return len(getString()) } } func main() { getString := func() string { return "Hello, World!" } getInt := getStringToIntAdapter(getString) fmt.Println(getInt()) // 输出 13 }
下面是对两种方法的性能对比:
方法 | 时间 (纳秒) |
---|---|
Type Conversion | 400 |
Func Adapter | 600 |
从结果来看,Type Conversion 的性能优于 Func Adapter。这是因为 Type Conversion 实际上不会创建新的函数,而只是将函数指针转换为另一个类型。而 Func Adapter 则会创建新的函数,开销更大。
在实际开发中,我们可以使用函数类型转换将高阶函数(如 map
和 filter
// 将字符串列表转换为整数列表 func mapToInts(strs []string) []int { return map(func(s string) int { return len(s) }, strs) }
Kaedah
Masa (nanosaat)
peta
dan filter
) kepada yang berbeza jenis pada data. Contohnya: 🎜rrreee🎜Melalui penukaran jenis fungsi, kami boleh menggunakan fungsi tertib tinggi secara fleksibel pada sebarang jenis data, meningkatkan kebolehgunaan semula kod. 🎜Atas ialah kandungan terperinci Perbandingan prestasi penukaran jenis fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!