Mengembalikan Nilai Lalai untuk Jenis Generik
Dalam Go, pernyataan "tidak boleh menggunakan nil sebagai nilai T dalam penyataan pemulangan" berlaku apabila cuba untuk pulangkan sifar untuk jenis generik. Ini kerana nil bukan nilai yang sah untuk semua jenis. Sebagai contoh, dalam kod yang disediakan:
func (list *mylist[T]) pop() T {...} func (list *mylist[T]) getfirst() T {...}
Jika T adalah jenis int, tiada nilai nil yang wajar. Begitu juga, untuk struct, nil bukan nilai yang sah.
Sebaliknya, anda harus menggunakan nilai sifar untuk jenis yang diberikan. Nilai sifar ialah:
Begini cara anda boleh mengembalikan nilai sifar menggunakan fungsi generik:
func getZero[T any]() T { var result T return result }
Ini fungsi akan mengembalikan nilai sifar untuk sebarang jenis yang digunakan sebagai hujah jenis.
Menguji fungsi menghasilkan keputusan berikut:
int 0 string "" image.Point (0,0) *float64 nil
Seperti yang anda lihat, nilai sifar yang sesuai dikembalikan untuk berbeza jenis, memberikan nilai lalai yang wajar untuk fungsi dan jenis generik.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai Nihil Pengembalian untuk Jenis Generik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!