> 백엔드 개발 > Golang > Go에서 슬라이싱할 때 범위를 벗어난 오류를 어떻게 방지할 수 있나요?

Go에서 슬라이싱할 때 범위를 벗어난 오류를 어떻게 방지할 수 있나요?

DDD
풀어 주다: 2024-11-28 15:59:11
원래의
266명이 탐색했습니다.

How Can I Prevent Out-of-Bounds Errors When Slicing in Go?

Slicing in Go: Out of Bounds 오류 방지

슬라이싱을 사용하면 인덱스 범위를 지정하여 기존 슬라이스에서 새 슬라이스를 만들 수 있습니다. . 그러나 지정된 범위가 원본 슬라이스의 경계를 초과하면 범위를 벗어난 오류가 발생할 수 있습니다.

제공된 코드에서 c := b[1:] 줄은 새 슬라이스를 생성하려고 시도합니다. 슬라이스 b에서 슬라이스 c를 선택합니다. 이 오류는 c에 대한 높은 인덱스 경계가 명시적으로 지정되지 않았고 기본값이 b의 길이인 0이기 때문에 발생합니다.

Go에서 슬라이싱의 일반적인 형식은 다음과 같습니다.

subslice := original[start:end]
로그인 후 복사
  • start는 새 슬라이스의 포함 시작 인덱스입니다.
  • end는 새 슬라이스의 배타적 종료 인덱스입니다. Slice.

start를 생략하면 기본값은 0이고, end를 생략하면 기본값은 len(original)이다.

슬라이스의 경우 상위 인덱스 경계 슬라이스의 길이(len())가 아니라 슬라이스의 용량(cap())에 의해 제한됩니다. 즉, cap(original)보다 큰 종료 인덱스를 지정해도 여전히 유효한 것으로 간주됩니다. 그러나 len(original)보다 큰 끝 인덱스를 지정하면 out-of-bounds 오류가 발생합니다.

이 오류를 방지하려면 지정된 범위가 len(original)의 경계를 초과하지 않는지 확인해야 합니다. 원래 조각. 예제 코드에서는 인덱스 상한을 명시적으로 지정하여 문제를 해결할 수 있습니다.

c := b[1:2]
로그인 후 복사

이렇게 하면 인덱스 1의 요소를 포함하는 길이가 1이고 용량이 4인 슬라이스 c가 생성됩니다. b 조각.

위 내용은 Go에서 슬라이싱할 때 범위를 벗어난 오류를 어떻게 방지할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿