Updated:

less than 1 minute read

개요

  • 동적 배열
  • 내부 배열에 대한 뷰
  • 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}