Go의 슬라이싱과 슬라이싱

王林
풀어 주다: 2024-02-05 23:42:03
앞으로
408명이 탐색했습니다.

Go의 슬라이싱과 슬라이싱

질문 내용

go의 unsafe.SliceData 함수 문서에는 다음과 같이 나와 있습니다.

으아아아

&slice[0] 대신 &slice[:1][0]을 반환하는 논리는 무엇인가요? 내가 아는 한(그리고 내 테스트에서 확인한 바에 따르면) 둘 다 동일한 주소를 반환합니다. Go 개발자가 후자 대신 전자를 선택하는 특별한 이유가 있나요? &slice[:1][0] 而不是 &slice[0] 背后的逻辑是什么?据我所知(并且我的测试证实),两者都会返回相同的地址。 Go 开发者选择使用前者而不是后者有什么具体原因吗?


正确答案


切片可能具有正容量(cap(slice) > 0),但同时可能具有 0 长度。像 slice[0]

정답

slice[:1] 那样对其进行切片,这将产生长度为 1 的切片,并且您可以像 result[0]슬라이스의 용량은 양수(cap(slice) > 0)일 수 있지만 동시에 0 코드> 길이. slice[0]처럼 인덱싱하면 런타임 패닉이 발생합니다.

슬라이스의 용량이 양수이면 런타임 패닉을 일으키지 않고

와 같은 결과를 인덱싱할 수 있습니다.

예:

으아아아

결과는 다음과 같습니다. 🎜 으아아아 🎜그러나 이것은 작동합니다: 🎜 으아아아

위 내용은 Go의 슬라이싱과 슬라이싱의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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