Maison  >  Article  >  développement back-end  >  La méthode de suppression d'élément ne fonctionne pas dans Golang

La méthode de suppression d'élément ne fonctionne pas dans Golang

WBOY
WBOYavant
2024-02-09 09:33:181057parcourir

删除元素方法在 Golang 中不起作用

l'éditeur php Banana vous présentera comment supprimer des éléments dans Golang. Dans Golang, la manière de supprimer des éléments n'est pas aussi simple que dans d'autres langages de programmation, mais nous pouvons y parvenir grâce à quelques astuces. Dans cet article, nous explorerons plusieurs méthodes courantes pour vous aider à supprimer facilement des éléments dans Golang et à améliorer l'efficacité de la programmation. Que vous soyez débutant ou développeur expérimenté, ces méthodes vous aideront. Découvrons-le ensemble !

Contenu de la question

J'ai un code simple pour supprimer des éléments d'une tranche :

package main

import "fmt"

func main() {
    values := []string{"1", "2", "3", "4", "5"}
    valuesresult := removeelementbyindex(values2, 0)
    fmt.printf("%v - %v\n", values, valuesresult)
}

func removeelementbyindex[t interface{}](a []t, i int) []t {
    return append(a[:i], a[i+1:]...)
}

Mais le résultat est

[2 3 4 5 5] - [2 3 4 5]

Pour une raison quelconque, les values changent mais je ne les change pas dans ma méthode (je suppose). S'il vous plaît, aidez-moi à résoudre ce problèmevalues 正在改变,但我没有在我的方法中改变它(我猜)。请帮我解决这个问题

解决方法

您确实更改了原始切片。如果附加操作的结果适合切片的容量,则 append

Solution de contournement

Vous avez modifié la tranche d'origine. Si le résultat de l'opération d'ajout correspond à la capacité de la tranche, l'opération append utilise la tranche d'origine. 🎜 🎜Si vous avez besoin de la tranche originale inchangée : 🎜
func removeElementByIndex[T interface{}](a []T, i int) []T {
    result := make([]T, len(a)-1)
    copy(result,a[:i])
    copy(result[i:],a[i+1:])
    return result
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer