Maison >développement back-end >Golang >Comment supprimer efficacement des éléments des tableaux Struct dans Go ?
Suppression efficace d'éléments des tableaux de structures dans Golang
Lorsque vous travaillez avec des tableaux de structures, il est souvent nécessaire de supprimer des éléments spécifiques en fonction des conditions . Le code suivant illustre un problème rencontré lors de la tentative de suppression d'un élément à l'index « i » d'un tableau appelé « 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 }
Ce code entraîne une erreur « hors plage » car le La boucle for essaie toujours d'accéder à l'élément supprimé à l'index 'i'. Pour résoudre ce problème, il est recommandé d'utiliser l'une des techniques de suppression efficaces suivantes :
list = append(list[:i], list[i+1:]...)
list = list[:i]
list = list[:i+copy(list[i:], list[i+1:])]
Notez que lors de la suppression éléments d'un tableau sur lequel vous effectuez actuellement une boucle, il est préférable d'utiliser une boucle descendante pour éviter d'éventuels problèmes d'index :
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:]...) } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!