Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengubah Suai Jenis-Ditegaskan Kepingan Antara Muka dalam Go?

Bagaimana untuk Mengubah Suai Jenis-Ditegaskan Kepingan Antara Muka dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-24 22:29:11
asal
193 orang telah melayarinya

How to Modify Type-Asserted Slices of Interfaces in Go?

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}
Salin selepas log masuk

Jika kita cuba mengalih keluar elemen daripada kepingan menggunakan jenis penegasan:

i := 2
value.([]interface{}) = append(value.([]interface{})[:i],
   value.([]interface{})[i+1:]...)
Salin selepas log masuk

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}}
Salin selepas log masuk

Menggunakan penuding membolehkan kami mengubah suai kepingan asas:

sp := value[0]
i := 2
*sp = append((*sp)[:i], (*sp)[i+1:]...)
Salin selepas log masuk

Dalam kes ini, perubahan yang dibuat kepada kepingan runcing dicerminkan dalam nilai antara muka asal:

fmt.Println(value)
// Output: [*[]interface {0 one 3 4}]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan