Apabila bekerja dengan tatasusunan struct, selalunya perlu memadamkan elemen berdasarkan keadaan tertentu. Walau bagaimanapun, melaksanakan logik pemadaman ini boleh menjadi rumit dan boleh membawa kepada ralat. Artikel ini akan meneroka amalan terbaik untuk memadamkan elemen daripada tatasusunan struct dalam gelung Go.
Pertimbangkan tatasusunan struct berikut:
type Config struct { Applications []Application } config := new(Config) _ = decoder.Decode(&config)
Sekarang, dalam gelung, anda boleh menghadapi senario di mana anda perlu memadamkan elemen daripada config.Applications berdasarkan a kunci.
for i, application := range config.Applications { if i == 1 { config.Applications = _removeApplication(i, config.Applications) } } func _removeApplication(i int, list []Application) []Application { if i < len(list)-1 { list = append(list[:i], list[i+1:]...) } else { log.Print(list[i].Name) list = list[:i] } return list }
Malangnya, kod ini mungkin mengakibatkan ralat "di luar julat". Untuk menyelesaikan masalah ini, kami boleh memanfaatkan teknik berikut:
Padam dari Akhir hingga Permulaan:
Mengikut halaman Slice Tricks, seseorang boleh memadamkan elemen di indeks i seperti berikut:
a = append(a[:i], a[i+1:]...)
Pendekatan ini memastikan semua elemen berikutnya dianjak ke kiri selepas pemadaman, tanpa menjejaskan indeks gelung semasa. Walau bagaimanapun, perlu diingat bahawa mengulangi sekeping semasa memadam memerlukan berhati-hati, kerana ia boleh membawa kepada hasil yang tidak dapat diramalkan.
Gunakan Gelung Ke Bawah:
Untuk mengelakkan isu ini , anda boleh menggunakan gelung ke bawah yang bermula dari elemen terakhir hirisan. Dengan cara ini, pemadaman elemen tidak menjejaskan mana-mana elemen sebelumnya dalam gelung:
for i := len(config.Applications) - 1; i >= 0; i-- { application := config.Applications[i] // Condition to decide if the current element has to be deleted: if haveToDelete { config.Applications = append(config.Applications[:i], config.Applications[i+1:]...) } }
Dengan mengikuti amalan terbaik ini, anda boleh mengalih keluar elemen secara berkesan dan selamat daripada tatasusunan struct dalam gelung Go.
Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Elemen dengan Selamat daripada Susunan Struktur dalam Go Loops?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!