Go - Slice
Slice
like array, but something different.
reference type.
declare slice
var $NAME []$TYPE
allocate space
var $NAME []$TYPE = make([]$TYPE, $SIZE)
var $NAME []$TYPE = make([]$TYPE, $SIZE, $CAPACITY)
$NAME := make([]$TYPE, $SIZE)
$NAME := make([]$TYPE, $SIZE, $CAPACITY)
capacity를 생략하면 size와 동일하게 생성됨.
size를 넘어서 추가될 데이터에 대비해 미리 메모리 공간 확보를 위함.
size만큼의 공간은 0으로 초기화되어 생성됨.
set values
append
append values to slice
a := []int{1, 2, 3, 4, 5}
a = append(a, 6, 7)
fmt.Println(a) // [1 2 3 4 5 6 7]
append slice to slice
추가할 요소이름 뒤에 ...
를 붙여서 슬라이스임을 나타냄.
a := []int{1, 2}
b := []int{3, 4}
a = append(a, b...)
fmt.Println(c) // [1, 2, 3, 4]
copy
slice는 reference type이라 단순히 대입하면 주소값을 가져가게 됨.
copy($COPIED_SLICE, $ORIGIN_SLICE)
원본보다 복사할 슬라이스의 크기가 작은 경우 복사될 슬라이스의 크기만큼 복사됨.