Slicing: Out of Bounds Error in Go
다음 코드를 실행할 때:
package main import "fmt" func main() { a := make([]int, 5) printSlice("a", a) b := make([]int, 0, 5) printSlice("b", b) c := b[1:] printSlice("c", c) } func printSlice(s string, x []int) { fmt.Printf("%s len=%d cap=%d %v\n", s, len(x), cap(x), x) }
"범위를 벗어났습니다" 오류. 이 오류는 c 슬라이스를 생성할 때 잘못된 슬라이싱 표현식으로 인해 발생합니다.
Go에서 배열이나 슬라이스를 슬라이싱하는 경우 다음 규칙을 따릅니다.
슬라이싱 표현식 b[1:]는 하한이 1인 새 슬라이스 c를 생성하려고 시도합니다. 그러나 상한은 누락되었으며 기본값은 b의 길이(0)입니다. 이로 인해 하한이 상한보다 큰 슬라이스가 발생하여 "경계를 벗어났습니다." 오류.
이 오류를 수정하려면 슬라이싱 표현식의 상한이 하한보다 크거나 같은지 확인해야 합니다. 예를 들어, 다음 표현식을 사용하여 유효한 슬라이스 c를 생성할 수 있습니다.
c := b[1:2]
이는 하한이 1이고 상한이 2인 슬라이스 c를 생성합니다. 이는 1 < = 2
위 내용은 Go에서 'b[1:]'을 슬라이싱하면 범위를 벗어난 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!