Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada Susunan Struktur dalam Go?

Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada Susunan Struktur dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-29 22:43:09322semak imbas

How to Safely Remove Elements from an Array of Structs in Go?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn