Apabila fungsi generik mengendalikan jenis penuding dalam Go, ia akan menerima rujukan kepada pembolehubah asal, membenarkan nilai pembolehubah diubah suai. Jenis rujukan disalin apabila diluluskan, menjadikan fungsi tidak dapat mengubah suai nilai pembolehubah asal. Contoh praktikal termasuk menggunakan fungsi generik untuk membandingkan rentetan atau kepingan nombor.
Cara Fungsi Generik Mengendalikan Jenis Penunjuk dan Rujukan dalam Go
Pengenalan
Generik ialah ciri berkuasa yang membolehkan kami mencipta fungsi yang boleh mengendalikan jenis data yang berbeza. Memahami cara fungsi generik mengendalikan jenis penunjuk dan rujukan adalah penting untuk memanfaatkannya sepenuhnya.
Jenis penunjuk
Penunjuk ialah pembolehubah yang menunjuk ke alamat memori pembolehubah lain. Apabila anda menghantar penunjuk sebagai parameter kepada fungsi generik, fungsi menerima rujukan kepada pembolehubah asal. Ini membolehkan fungsi mengubah suai nilai pembolehubah.
import "fmt" func PrintPointerValue[T any](ptr *T) { fmt.Println(*ptr) } func main() { num := 10 PrintPointerValue(&num) // 输出 10 }
Jenis rujukan
Jenis rujukan menggunakan penunjuk untuk berkongsi data antara pembolehubah berbeza. Tidak seperti penunjuk, jenis rujukan disalin apabila dihantar ke fungsi generik. Ini menjadikannya mustahil untuk fungsi mengubah suai nilai pembolehubah asal.
import "fmt" type Person struct { Name string } func PrintPersonName[T any](r T) { if p, ok := r.(Person); ok { // 类型断言 fmt.Println(p.Name) } } func main() { p := Person{Name: "John"} PrintPersonName(p) // 输出 John }
Kes praktikal
Berikut ialah kes penggunaan fungsi generik untuk membandingkan dua rentetan atau hirisan integer:
import "fmt" func Equal[T comparable](a, b []T) bool { if len(a) != len(b) { return false } for i, v := range a { if v != b[i] { return false } } return true } func main() { str1 := []string{"a", "b", "c"} str2 := []string{"a", "b", "c"} fmt.Println(Equal(str1, str2)) // 输出 true num1 := []int{1, 2, 3} num2 := []int{1, 2, 3} fmt.Println(Equal(num1, num2)) // 输出 true }
Atas ialah kandungan terperinci Bagaimanakah fungsi generik mengendalikan penunjuk dan jenis rujukan dalam Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!