nums := []int{2, 3, 4}
What does this do in go? Am I creating an array or a slice?
From this: https://gobyexample.com/range, it says slice. But I think it is an array.
nums := []int{2, 3, 4}
What does this do in go? Am I creating an array or a slice?
From this: https://gobyexample.com/range, it says slice. But I think it is an array.
In go, array types include their length. Since you omitted the length it is a slice:
array := [3]int{1, 2, 3} // Array since it includes length (3).
slice := array[:] // Slice since there is no length specified.
fmt.Printf("%#v - %T
", slice, slice) // %T means "type".
fmt.Printf("%#v - %T
", array, array)
// [3]int{1, 2, 3} - [3]int
// []int{1, 2, 3} - []int
In the example above, we made a slice without invoking "make" by setting it to the full range of of array
. If you were to edit either array
or slice
then both will change, since "slice" is essentially a view into the storage that is "array".
slice[0] = 456 // And array[0] == 456
array[0] = 789 // And slice[0] == 789