Memanipulasi Kepingan Jenis-Tegas Antara Muka dalam Go
Di Golang, penegasan jenis membenarkan pembangun mengakses jenis konkrit asas bagi nilai antara muka . Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa penegasan jenis tidak mengubah suai nilai antara muka asal. Ini boleh menjadi masalah apabila cuba mengalih keluar elemen daripada kepingan antara muka yang ditegaskan jenis.
Pertimbangkan contoh berikut:
value := []interface{}{0, "one", "two", 3, 4}
Jika kita cuba mengalih keluar elemen daripada kepingan menggunakan jenis penegasan:
i := 2 value.([]interface{}) = append(value.([]interface{})[:i], value.([]interface{})[i+1:]...)
Kami akan menghadapi ralat yang menyatakan "tidak boleh menetapkan nilai (taip []antara muka {})". Ini kerana penegasan jenis mencipta salinan nilai asal dan perubahan yang dibuat pada salinan tidak menjejaskan yang asal.
Untuk menangani isu ini, adalah perlu untuk mengubah suai bahagian asas antara muka dan bukannya menaip- salinan yang ditegaskan. Ini boleh dicapai dengan membalut kepingan dalam penuding antara muka:
value := []*[]interface{}{&[]interface{}{0, "one", "two", 3, 4}}
Menggunakan penuding membolehkan kami mengubah suai kepingan asas:
sp := value[0] i := 2 *sp = append((*sp)[:i], (*sp)[i+1:]...)
Dalam kes ini, perubahan yang dibuat kepada kepingan runcing dicerminkan dalam nilai antara muka asal:
fmt.Println(value) // Output: [*[]interface {0 one 3 4}]
Dengan menggunakan penunjuk antara muka, pembangun boleh memanipulasi serpihan antara muka yang ditegaskan taip tanpa menghadapi ralat tugasan.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Suai Jenis-Ditegaskan Kepingan Antara Muka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!