Jenis Terbenam: Meneroka Kegunaan Benam Primitif
Apabila bekerja dengan struct Go, konsep membenamkan jenis primitif boleh timbul. Pertimbangkan coretan kod di bawah:
type User struct { int32 Name string }
Kod ini mentakrifkan struct Pengguna yang membenamkan jenis primitif int32. Walau bagaimanapun, persoalan timbul mengenai utiliti pembenaman sedemikian:
Adakah Primitif Terbenam Mempunyai Kaedah?
Tidak, primitif terbenam seperti int32 tidak mempunyai sebarang kaedah yang dikaitkan dengannya . Untuk mengesahkan ini, seseorang boleh menggunakan refleksi untuk memeriksa bilangan kaedah yang tersedia:
fmt.Println(reflect.TypeOf(int32(0)).NumMethod())
Output akan menjadi 0, menunjukkan bahawa int32 tidak mempunyai kaedah.
Mengakses Primitif Terbenam Nilai
Untuk mengakses nilai int32 terbenam dalam contoh Pengguna, seseorang boleh terus gunakan nama jenis yang tidak layak sebagai nama medan:
u := User{3, "Bob"} fmt.Printf("%#v\n", u) u.int32 = 4 fmt.Println(u.int32)
Output:
main.User{int32:3, Name:"Bob"} 4
Kelebihan Embedding
Semasa membenamkan jenis primitif mungkin tidak menyediakan akses terus kepada kaedah, ia menawarkan kelebihan tertentu apabila berurusan dengan antara muka dan kaedah mengatasi.
Kelemahan Membenamkan Jenis Diisytiharkan
Apabila membenamkan jenis yang diisytiharkan seperti int32, terdapat kelemahan yang perlu dipertimbangkan:
Atas ialah kandungan terperinci Adakah Jenis Primitif Terbenam dalam Go Menawarkan Apa-apa Kelebihan Nyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!