78 votes

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 ...

108voto

Mohsin Points 1107

Référez-vous à: Ajouter et copier des 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.

6voto

榴莲榴莲 Points 41

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.

4voto

Nevercare Points 41

vous pouvez essayer ceci:

 sliceA = append(sliceA, 4)
 

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

1voto

djt Points 3457

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.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X