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:]...)
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}
Kini, kita boleh membatalkan rujukan penunjuk dan mengubah suai hirisan seperti berikut:
sp := value.(*[]interface{}) i := 2 *sp = append((*sp)[:i], (*sp)[i+1:]...)
Output:
fmt.Println(value) // &[0 one 3 4]
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!