Memadamkan Elemen daripada Slice Jenis-Tegas Antara Muka
Apabila memanipulasi nilai kepingan yang dibalut dalam antara muka dalam Go, mengalih keluar elemen terus dari hirisan tidak mungkin. Operasi ini mengakibatkan ralat "tidak boleh menetapkan nilai" kerana penegasan jenis mencipta salinan nilai yang disimpan dalam antara muka.
Menetapkan nilai kepada antara muka yang ditegaskan jenis tidak mengubah suai nilai asal yang disimpan dalam antara muka. Sebaliknya, ia hanya mengubah salinan yang diperoleh daripada penegasan jenis. Untuk memintas pengehadan ini, pertimbangkan untuk menyimpan penuding hirisan dalam antara muka (*[]antara muka{}).
Jenis penuding membenarkan perubahan pada nilai yang ditunjuk dan bukannya penuding itu sendiri. Ini ditunjukkan di bawah:
s := []interface{}{0, "one", "two", 3, 4} var value interface{} = &s // Perform removal by accessing the pointed slice sp := value.(*[]interface{}) i := 2 *sp = append((*sp)[:i], (*sp)[i+1:]...) fmt.Println(value)
Output:
&[0 one 3 4]
Dengan menaip-menegaskan antara muka pada penuding hirisan ([]antara muka{}) dan menggunakan pengendali arahan (), kita boleh mengubah suai nilai hirisan runcing secara langsung.
Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Elemen daripada Slice yang Disimpan Dalam Antara Muka Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!