🔥 슬라이스 범위 기본값

250자
4분

Go 언어에서 슬라이싱을 할 때, 상한값이나 하한값을 생략할 수 있어요. 이렇게 하면 기본값을 사용하게 되죠.

슬라이싱 연산에서 하한값의 기본값은 0이며, 상한값의 기본값은 슬라이스의 길이랍니다.

예를 들어, 아래와 같은 배열이 있다고 해볼까요?

var a [10]int
 
go

이 배열에 대해 다음의 슬라이스 표현식은 모두 동일한 결과를 가져온답니다.

a[0:10]
a[:10]
a[0:]
a[:]
 
go

실제 코드로 한번 살펴볼까요?

package main
 
import "fmt"
 
func main() {
	// 초기 슬라이스를 생성해요.
	s := []int{2, 3, 5, 7, 11, 13}
 
	// 인덱스 1부터 4 이전까지 슬라이싱하여 s를 갱신해요.
	s = s[1:4]
	fmt.Println(s) // [3 5 7] 출력
 
	// 인덱스 0부터 2 이전까지 슬라이싱하여 s를 갱신해요.
	s = s[:2]
	fmt.Println(s) // [3 5] 출력
 
	// 인덱스 1부터 끝까지 슬라이싱하여 s를 갱신해요.
	s = s[1:]
	fmt.Println(s) // [5] 출력
}
 
go

코드를 하나씩 살펴보면서 슬라이싱 과정과 s의 변화를 이해해 보아요.

  1. 먼저 []int{2, 3, 5, 7, 11, 13}로 초기 슬라이스 s를 생성했어요.
  2. s = s[1:4]로 슬라이싱한 결과를 다시 s에 할당했어요. 이렇게 하면 s[3 5 7]로 갱신되겠죠?
  3. 갱신된 s에 대해 s = s[:2]로 슬라이싱한 결과를 다시 s에 할당했어요. 이제 s[3 5]가 되겠네요.
  4. 마지막으로 갱신된 s에 대해 s = s[1:]로 슬라이싱한 결과를 다시 s에 할당했어요. 최종적으로 s[5]가 되겠죠?

이렇게 슬라이싱 연산의 결과를 원래의 슬라이스 변수에 다시 할당하면, 해당 변수는 슬라이싱된 결과로 갱신된답니다. 따라서 s의 값이 계속 변화하는 것을 볼 수 있어요.

슬라이싱 시에 하한값과 상한값을 생략하면 기본값이 적용되고, 슬라이싱 연산의 결과를 다시 할당하면 슬라이스 변수의 값이 갱신되는 것을 이해하셨나요? 코드를 단계별로 살펴보면서 s의 변화를 추적해 보는 것이 도움이 될 거예요!