[Go] 슬라이스
Updated:
개요
- 동적 배열
- 내부 배열에 대한 뷰
- make 함수 혹은 슬라이스 리터럴을 이용하여 이용하여 생성
- 슬라이스의 제로 값은 nil이며 빈 슬라이스인 것처럼 처리하므로 nil 체크 코드 불필요
- append 함수를 이용하여 원소 추가
- 일반적으로 반환 값을 인자로 전달한 슬라이스에 할당
- 서로 다른 두 슬라이스가 동일한 내부 배열을 바라보는 문제 방지
- 일반적으로 반환 값을 인자로 전달한 슬라이스에 할당
- 할당되지 않은 원소는 해당 타입의 제로 값
예제
- 코드
package main import "fmt" func sliceTest(s []int) { fmt.Printf("%d, %#v\n", len(s), s) s = append(s, 100) s = append(s, 101, 102) fmt.Printf("%d, %#v, %#v\n", len(s), s, s[1:3]) } func main() { var s1 []int sliceTest(s1) println("------ 1") var s2 []int = make([]int, 0) sliceTest(s2) println("------ 2") s3 := make([]int, 3) s3[1] = 2 sliceTest(s3) println("------ 3") s4 := []int{} sliceTest(s4) println("------ 4") s5 := []int{1, 2, 3} sliceTest(s5) }
- 실행 결과
0, []int(nil) 3, []int{100, 101, 102}, []int{101, 102} ------ 1 0, []int{} 3, []int{100, 101, 102}, []int{101, 102} ------ 2 3, []int{0, 2, 0} 6, []int{0, 2, 0, 100, 101, 102}, []int{2, 0} ------ 3 0, []int{} 3, []int{100, 101, 102}, []int{101, 102} ------ 4 3, []int{1, 2, 3} 6, []int{1, 2, 3, 100, 101, 102}, []int{2, 3}