Mengalih keluar Elemen Tatasusunan Struktur dalam Go
Apabila bekerja dengan tatasusunan struct dalam Go, mungkin perlu mengalih keluar elemen berdasarkan syarat tertentu. Walau bagaimanapun, percubaan untuk melakukan ini dalam gelung boleh membawa kepada ralat "di luar julat".
Pertimbangkan contoh berikut:
type Config struct { Applications []Application } // config is initialized from a JSON file config = new(Config) _ = decoder.Decode(&config) 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 }
Kod ini cuba mengalih keluar elemen kedua (indeks 1 ) daripada tatasusunan Aplikasi. Walau bagaimanapun, pemadaman elemen dalam gelung ini, terutamanya jika elemen semasa dipadamkan, boleh mengakibatkan pengindeksan yang salah disebabkan oleh peralihan kedudukan elemen selepas pemadaman.
Penyelesaian Disyorkan
Untuk mengelakkan isu pengindeksan, adalah dinasihatkan untuk menggelung dalam susunan terbalik:
for i := len(config.Applications) - 1; i >= 0; i-- { application := config.Applications[i] // Condition to decide if current element has to be deleted: if haveToDelete { config.Applications = append(config.Applications[:i], config.Applications[i+1:]...) } }
Ini ke bawah gelung memastikan bahawa elemen selepas yang dipadamkan dialihkan dengan betul, mengelakkan sebarang isu di luar lingkungan.
Atas ialah kandungan terperinci Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada Susunan Struktur dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!