2017-07-10 9 views
13
func main(){ 
    var array [10]int 
    sliceA := array[0:5] 
    append(sliceA, 4) 
    fmt.Println(sliceA) 
} 

Fehler verwendet: append (sliceA, 4) ausgewertet, aber nicht verwendetgolang append() ausgewertet, aber nicht

Ich weiß nicht, warum? Die Scheibe Anfügevorgang wird nicht ausgeführt ...

+0

Weil 'append' Ergebnis zurückgibt, und Sie es nicht verwenden. – zerkms

Antwort

24

Siehe: Appending to and copying slices

In Go, Argumente werden von Wert übergeben.

Typische append Nutzung ist:

a = append(a, x) 

Sie müssen schreiben:

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

Ausgang:

[0 0 0 0 0 4] 

Ich hoffe, es hilft.

+1

Ja, es läuft Erfolg ... –

0

sliceA = anhängen (sliceA, 4) append gibt ein Slice zurück, das einen oder mehrere neue Werte enthält. Beachten Sie, dass wir einen Rückgabewert von append akzeptieren müssen, da wir möglicherweise einen neuen Slice-Wert erhalten.

2

Per den Go-Dokumente:

Der resultierende Wert von append eine Scheibe alle Elemente der ursprünglichen Scheibe sowie die vorgesehenen Werte enthält.

Also der Rückgabewert von 'append', wird Ihre ursprüngliche Scheibe mit dem angehängten Teil enthalten.

1

Sie können versuchen, diese:

sliceA = append(sliceA, 4) 

eingebaute Funktion append([]type, ...type) einen Array/Stück Typen zurückgibt, die den Wert zugewiesen werden, sollten Sie wollten, während die Eingänge Array/Scheibe nur eine Quelle. Einfach, outputSlice = append(sourceSlice, appendedValue)

Verwandte Themen