728x90

슬라이싱(Slicing)은 배열의 일부를 포인터로 가져오는 기능이다.

// array[startIdx:endIdx]

arr := [5]int{1, 2, 3, 4, 5}
arr[1:3] // [2, 3] - (1)부터 (3-1)까지의 값을 가져온다.

 

배열의 슬라이싱

func main()
{
    array := [5]int{1, 2, 3, 4, 5}
    slice := array[1:2]           // 슬라이싱으로 2 값의 포인터를 가져온다
    
    array[1] = 100                // array : [1, 100, 3, 4, 5]
                                  // slice : [100]
                      
    slice = append(slice, 500)    // array : [1, 100, 500, 4, 5]
                                  // slice : [100, 500]
}

위와 같이 array의 값들 중에서 원하는 값을 포인터로 가져올 수 있다.

 

슬라이스의 슬라이싱

func main()
{
    slice1 := []int{1, 2, 3, 4, 5}
    slice2 := slice1[1:2]          // 슬라이싱으로 2 값의 포인터를 가져온다
    
    slice1[1] = 100                // slice1 : [1, 100, 3, 4, 5]
                                   // slice2 : [100]
                      
    slice1 = append(slice1, 500)   // slice1 : [1, 100, 500, 4, 5]
                                   // slice2 : [100, 500]
}

 

슬라이싱의 문법

slice1 := []int{1, 2, 3, 4, 5}
slice2 := slice1[0:3] // [1, 2, 3] 처음부터 3-1까지 슬라이싱

// 첫번째 0 인덱스는 제외가 가능하다.
slice3 := slice1[:3] // [1, 2, 3] 처음부터 3-1까지 슬라이싱

slice4 := slice1[2:len(slice1)] // [3, 4, 5] 2부터 끝까지 슬라이싱

// 마지막 인덱스는 제외가 가능하다
slice5 := slice1[2:] // [3, 4, 5] 2부터 끝까지 슬라이싱

// 위에 것을 응용하면 전체 슬라이싱이 간편하다
slice6 := slice1[:] // [1,2, 3, 4, 5] 전체 슬라이싱

// 인덱스 3개로 슬라이싱
//slice[시작 : 끝 : 최대]
slice := []int{1, 2, 3, 4, 5}
slice1 := slice[1:3:4] // [2, 3] 이고 capacity는 4(최대)-1(시작)인 3

 

- 출처 : Tucker의 Go 언어 프로그래밍

728x90

+ Recent posts