web-dev-qa-db-fra.com

golang append () évalué mais non utilisé

func main(){
     var array [10]int
     sliceA := array[0:5]
     append(sliceA, 4)
     fmt.Println(sliceA)
}

Erreur: append (sliceA, 4) évalué mais non utilisé

Je ne sais pas pourquoi? L'opération d'ajout de tranche n'est pas exécutée ...

42
L.jerson

Voir: Ajout et copie de tranches

Dans Go, les arguments sont passés par valeur.

L'utilisation typique de append est:

a = append(a, x)

Vous devez écrire:

func main(){
    var array [10]int
    sliceA := array[0:5]
    // append(sliceA, 4)  // discard
    sliceA = append(sliceA, 4)  // keep
    fmt.Println(sliceA)
}

Sortie :

[0 0 0 0 0 4]

J'espère que ça aide.

59
Mohsin

sliceA = append (sliceA, 4) append renvoie une tranche contenant une ou plusieurs nouvelles valeurs. Notez que nous devons accepter une valeur de retour de append car nous pourrions obtenir une nouvelle valeur de tranche.

4
榴莲榴莲

vous pouvez essayer ceci:

sliceA = append(sliceA, 4)

fonction intégrée append([]type, ...type) renvoie un tableau/une tranche de type, qui doit être affecté à la valeur souhaitée, tandis que le tableau/la tranche d'entrée est simplement une source. Simplement, outputSlice = append(sourceSlice, appendedValue)

3
Nevercare

Selon les documents Go:

La valeur résultante de append est une tranche contenant tous les éléments de la tranche d'origine plus les valeurs fournies.

Donc, la valeur de retour de 'append' contiendra votre tranche d'origine avec la portion ajoutée.

1
djt