Go Slices: Difference between revisions
Line 19: | Line 19: | ||
Type inferred declaration, where the length and the capacity of the slice are specified can be performed using <tt>[[Go Slices#make.28.29|make()]]</tt>. | Type inferred declaration, where the length and the capacity of the slice are specified can be performed using <tt>[[Go Slices#make.28.29|make()]]</tt>. | ||
The slices can also be created with the "slice" operator: | |||
<pre> | |||
<array_identifier>[<low>:<high>] | |||
</pre> | |||
Example: | |||
<pre> | |||
var a [5]int | |||
s := a[0:2] | |||
</pre> | |||
The "low" index is the index where to start the slice and "high" is the index | |||
=Slice Literals= | =Slice Literals= |
Revision as of 23:43, 27 March 2016
Internal
Overview
A slice is a reference type that implements a dynamic array. Slices are indexable, and they have a variable length. They are always associated with an underlying array, and the slice length cannot be longer than the underlying array - but it can be shorter. The slice's capacity is equal to the length on the underlying array.
TODO Deep difference between slice and array (memory model, etc.)
Declaration
A slice declaration is similar to an array's except the length is not specified. The slice is created with a zero length.
var s []int
Type inferred declaration, where the length and the capacity of the slice are specified can be performed using make().
The slices can also be created with the "slice" operator:
<array_identifier>[<low>:<high>]
Example:
var a [5]int s := a[0:2]
The "low" index is the index where to start the slice and "high" is the index
Slice Literals
Slice Operators and Functions
make()
<slice_identifier> := make([]<slice_element_type>, <slice_length>, <capacity>)
s := make([]int, 5) s1 := make([]int, 5, 10)