Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memadamkan Elemen dengan Cekap daripada Susunan Struktur dalam Go?
Pemadaman Elemen yang Cekap daripada Tatasusunan Struktur di Golang
Semasa bekerja dengan tatasusunan struktur, selalunya perlu mengalih keluar elemen tertentu berdasarkan syarat . Kod berikut menunjukkan isu yang dihadapi semasa cuba memadamkan elemen pada indeks 'i' daripada tatasusunan yang dipanggil 'config.Applications':
type Config struct { Applications []Application } 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 mengakibatkan ralat "di luar julat" kerana for loop masih cuba mengakses elemen yang dipadam pada indeks 'i'. Untuk menangani isu ini, adalah disyorkan untuk menggunakan salah satu daripada teknik pemadaman cekap berikut:
list = append(list[:i], list[i+1:]...)
list = list[:i]
list = list[:i+copy(list[i:], list[i+1:])]
Perhatikan bahawa apabila memadam elemen daripada tatasusunan yang sedang anda gelungkan, sebaiknya gunakan gelung ke bawah untuk mengelakkan potensi indeks isu:
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:]...) } }
Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Elemen dengan Cekap daripada Susunan Struktur dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!