Dalam Go, adalah perkara biasa untuk membenamkan jenis tersuai dalam struct untuk fungsi tambahan atau organisasi data. Walau bagaimanapun, bolehkah prinsip yang sama digunakan untuk jenis yang diisytiharkan seperti int32? Mari kita terokai soalan ini dan implikasinya.
Jenis yang diisytiharkan int32 tidak mempunyai kaedah yang tersedia. Ini boleh disahkan menggunakan refleksi:
fmt.Println(reflect.TypeOf(int32(0)).NumMethod()) // Prints 0
Untuk mengakses nilai int32 terbenam dalam struct, gunakan nama jenis tidak layak sebagai nama medan:
u := User{3, "Bob"} fmt.Printf("%#v\n", u) // Output: main.User{int32:3, Name:"Bob"} u.int32 = 4 fmt.Println(u.int32) // Output: 4
Walaupun membenamkan jenis primitif seperti int32 mungkin tidak memberikan sebarang kelebihan langsung, membenamkan jenis lain secara amnya menawarkan faedah seperti:
Membenamkan jenis yang dipraisytiharkan seperti int32 datang dengan kelemahan:
Kesimpulannya, membenamkan jenis yang diisytiharkan seperti int32 boleh berguna dalam senario tertentu, tetapi adalah penting untuk mempertimbangkan kelebihan dan kekurangan dengan teliti untuk memastikan ia merupakan penyelesaian terbaik untuk masalah di tangan.
Atas ialah kandungan terperinci Adakah Membenamkan Jenis Diisytiharkan Seperti `int32` dalam Go Menawarkan Apa-apa Kelebihan Nyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!