Go의 슬라이스

슬라이스는 동일한 유형의 요소 시퀀스를 나타내는 Go의 데이터 유형입니다. 그러나 배열의 더 중요한 차이점은 조각의 크기가 고정된 것이 아니라 동적이라는 것입니다.

슬라이스에는 세 가지 구성 요소만 있습니다.
  • 기본 배열의 첫 번째 도달 가능한 요소에 대한 포인터입니다. 이 요소는 반드시 배열의 첫 번째 요소인 array[0]일 필요는 없습니다.
  • 슬라이스의 길이. 슬라이스의 요소 수입니다.
  • 슬라이스의 용량입니다. 슬라이스의 시작과 기본 배열의 끝 사이의 요소 수입니다.



  • 슬라이스 선언 및 초기화




    package main
    
    import "fmt"
    
    func main() {
        months := []string{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
        fmt.Println(months)
        fmt.Println("Length:", len(months))
        fmt.Println("Capacity:", cap(months))
    }
    


    산출




    
    [January February March April May June July August September October November December]
    Length: 12
    Capacity: 12
    


    슬라이스 항목

    Go는 슬라이스 연산자 s[i:p]를 지원합니다.

    s는 배열을 나타냅니다.
    i는 새 슬라이스에 추가할 기본 배열(또는 다른 슬라이스)의 첫 번째 요소에 대한 포인터를 나타냅니다. 변수 i는 array[i] 배열의 인덱스 위치 i에 있는 요소에 해당합니다. 이 요소가 반드시 기본 배열의 첫 번째 요소인 array[0]일 필요는 없습니다.
    p는 새 조각을 만들 때 사용할 기본 배열의 요소 수를 나타냅니다. 변수 p는 새 슬라이스에서 사용할 수 있는 기본 배열의 마지막 요소에 해당합니다. 기본 배열의 위치 p에 있는 요소는 위치 array[i+1]에서 찾을 수 있습니다. 이 요소는 기본 배열의 마지막 요소인 array[len(array)-1]일 필요는 없습니다.



    package main
    
    import "fmt"
    
    func main() {
        months := []string{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
        quarter1 := months[0:3]
        quarter2 := months[3:6]
        quarter3 := months[6:9]
        quarter4 := months[9:12]
        fmt.Println(quarter1, len(quarter1), cap(quarter1))
        fmt.Println(quarter2, len(quarter2), cap(quarter2))
        fmt.Println(quarter3, len(quarter3), cap(quarter3))
        fmt.Println(quarter4, len(quarter4), cap(quarter4))
    } 
    


    산출




    [January February March] 3 12
    [April May June] 3 9
    [July August September] 3 6
    [October November December] 3 3
    

    좋은 웹페이지 즐겨찾기