Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk mengalih keluar Elemen daripada Slices Antara Muka Jenis Ditegaskan dalam Go?

Bagaimana untuk mengalih keluar Elemen daripada Slices Antara Muka Jenis Ditegaskan dalam Go?

DDD
Lepaskan: 2024-11-19 10:21:02
asal
979 orang telah melayarinya

How to Remove Elements from Type-Asserted Interface Slices in Go?

Jenis Penegasan dalam Golang: Mengalih keluar Elemen daripada Kepingan Antara Muka

Di Golang, penegasan taip membolehkan kami mengekstrak jenis asas nilai antara muka . Walau bagaimanapun, selepas penegasan jenis, bagaimanakah kita boleh memanipulasi nilai asas?

Pertimbangkan contoh berikut, yang cuba mengalih keluar elemen daripada kepingan antara muka yang ditegaskan jenis:

value := []interface{}{0, "one", "two", 3, 4}
i := 2
value.([]interface{}) = append(value.([]interface{})[:i], value.([]interface{})[i+1:]...)
Salin selepas log masuk

The kod di atas mengakibatkan ralat "tidak boleh menetapkan nilai ([]antara muka{})". Ralat ini berpunca daripada fakta bahawa antara muka menyimpan salinan nilai asas dan penegasan taip tidak mengubah suai nilai dalam antara muka.

Penyelesaian

Untuk mengubah suai nilai asas, sebaliknya kita mesti menyimpan penuding ke hirisan dalam antara muka. Contohnya:

var value interface{} = &[]interface{}{0, "one", "two", 3, 4}
Salin selepas log masuk

Kini, kita boleh membatalkan rujukan penunjuk dan mengubah suai hirisan seperti berikut:

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

Output:

fmt.Println(value) // &[0 one 3 4]
Salin selepas log masuk

Seperti yang anda lihat , elemen pada indeks 2 ("dua") telah dialih keluar daripada kepingan. Pendekatan ini berjaya mengubah suai nilai asas kerana antara muka menyimpan penunjuk pada hirisan, bukannya salinan hirisan itu sendiri.

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Elemen daripada Slices Antara Muka Jenis Ditegaskan 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan