golang append() evaluated but not used

ArraysGoVar

Arrays Problem Overview


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

> Error : append(sliceA, 4) evaluated but not used

I don't Know why? The slice append operation is not run...

Arrays Solutions


Solution 1 - Arrays

Refer: Appending to and copying slices

In Go, arguments are passed by value.

Typical append usage is:

a = append(a, x)

You need to write:

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

Output:

[0 0 0 0 0 4]

I hope it helps.

Solution 2 - Arrays

sliceA = append(sliceA, 4)

append() returns a slice containing one or more new values.
Note that we need to accept a return value from append as we may get a new slice value.

Solution 3 - Arrays

you may try this:

sliceA = append(sliceA, 4)

built-in function append([]type, ...type) returns an array/slice of type, which should be assigned to the value you wanted, while the input array/slice is just a source. Simply, outputSlice = append(sourceSlice, appendedValue)

Solution 4 - Arrays

Per the Go docs:

> The resulting value of append is a slice containing all the elements of the original slice plus the provided values.

So the return value of 'append', will contain your original slice with the appended portion.

Solution 5 - Arrays

The key to understand is that slice is just a "view" of the underling array. You pass that view to the append function by value, the underling array gets modified, at the end the return value of append function gives you the different view of the underling array. i.e. the slice has more items in it

your code
sliceA := array[0:5]  // sliceA is pointing to [0,5)
append(sliceA, 4) // sliceA is still the original view [0,5) until you do the following

sliceA = append(sliceA, 4)

reference: https://blog.golang.org/slices

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionL.jersonView Question on Stackoverflow
Solution 1 - ArraysMohsinView Answer on Stackoverflow
Solution 2 - Arrays榴莲榴莲View Answer on Stackoverflow
Solution 3 - ArraysNevercareView Answer on Stackoverflow
Solution 4 - ArraysdjtView Answer on Stackoverflow
Solution 5 - ArrayshefeicoderView Answer on Stackoverflow