Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengalih keluar Elemen daripada Slice Jenis-Tegas Antara Muka dalam Go?

Bagaimana untuk mengalih keluar Elemen daripada Slice Jenis-Tegas Antara Muka dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-27 13:00:11344semak imbas

How to Remove Elements from a Type-Asserted Slice of Interfaces in Go?

Mengalih keluar Elemen daripada Jenis Asserted Slice of Interface

Apabila bekerja dengan kepingan antara muka dalam Go, seseorang mungkin perlu mengalih keluar atau mengubah suai elemen dalam mereka. Walau bagaimanapun, pemberian terus kepada kepingan yang ditegaskan jenis boleh mengakibatkan ralat "tidak boleh menetapkan nilai.([]antara muka {})".

Ralat ini berlaku kerana nilai antara muka mengandungi salinan nilai yang dibalut, bukan rujukan kepadanya. Oleh itu, percubaan untuk mengubah suai nilai antara muka hanya akan menjejaskan salinan dan bukan kepingan asal.

Untuk mengalih keluar elemen daripada hirisan antara muka yang ditegaskan jenis, sebaliknya seseorang mesti menyimpan penunjuk keratan dalam antara muka. Ini membenarkan pengubahsuaian pada nilai runcing, iaitu hirisan sebenar.

Pertimbangkan contoh berikut:

s := []interface{}{0, "one", "two", 3, 4}

var value interface{} = &s

// Remove the element at index 2 ("two")
sp := value.(*[]interface{})

i := 2
*sp = append((*sp)[:i], (*sp)[i+1:]...)

fmt.Println(value)

Dalam kod ini, nilai nilai antara muka diberikan penuding hirisan &s sebaliknya daripada kepingan itu sendiri. Penegasan jenis kemudian mendapatkan kembali penuding hirisan daripada antara muka. Dengan mengubah suai nilai nyahrujuk *sp, kepingan asal dikemas kini.

Output akan menjadi &[0 satu 3 4], mengesahkan bahawa "dua" telah dialih keluar daripada kepingan. Teknik ini membolehkan pengubahsuaian yang selamat dan berkesan bagi kepingan antara muka yang ditegaskan jenis.

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Elemen daripada Slice Jenis-Tegas Antara Muka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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