Rumah > Artikel > pembangunan bahagian belakang > Bolehkah saya Mengubah Suai Elemen dalam Jenis Slices Tegas dalam Go?
Mengubah suai Elemen dalam Jenis Kepingan Ditegaskan
Apabila berurusan dengan kepingan dalam Go, adalah penting untuk memahami batasan penegasan jenis. Walaupun penegasan jenis membenarkan anda mengakses kepingan asas sebagai jenis tertentu, ia tidak memberikan anda keupayaan untuk mengubah suai unsurnya secara langsung.
Jika anda cuba mengubah suai elemen dengan menetapkan semula ungkapan seperti nilai.([] antara muka{}) = tambah(nilai.([]antara muka{})[:i], nilai.([]antaramuka{})[i 1:]...), anda akan menghadapi ralat. Ini kerana penegasan jenis tidak memberikan rujukan kepada kepingan sebenar, sebaliknya salinan. Sebarang perubahan yang anda buat pada salinan ini tidak akan ditunjukkan dalam kepingan asal.
Mengatasi Had
Untuk memintas pengehadan ini, pertimbangkan untuk menyimpan penunjuk hirisan dan bukannya potong terus dalam antara muka. Dengan menggunakan penuding, anda boleh mengakses dan mengubah suai kepingan tanpa melanggar kebolehubahan antara muka.
Sebagai contoh, contoh berikut menunjukkan cara untuk berjaya mengalih keluar elemen menggunakan penegasan jenis dan penuding:
s := []interface{}{0, "one", "two", 3, 4} var value interface{} = &s // Now do the removal: sp := value.(*[]interface{}) i := 2 *sp = append((*sp)[:i], (*sp)[i+1:]...) fmt.Println(value)
Dalam contoh ini, kami menggunakan jenis *[]antara muka{} untuk menyimpan penuding kepada kepingan dalam antara muka nilai. Apabila mengakses kepingan melalui *sp, kami kini bekerja secara langsung dengan kepingan asal, membolehkan kami mengubah suai elemennya mengikut keperluan.
Dengan memahami selok-belok penegasan jenis dan penunjuk, anda boleh memanipulasi kepingan dengan berkesan walaupun semasa ia dibalut dengan antara muka, memastikan kod Go anda kekal cekap dan bebas ralat.
Atas ialah kandungan terperinci Bolehkah saya Mengubah Suai Elemen dalam Jenis Slices Tegas dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!