>  기사  >  백엔드 개발  >  Go의 슬라이싱과 슬라이싱

Go의 슬라이싱과 슬라이싱

王林
王林앞으로
2024-02-05 23:42:03361검색

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으로 문의하시기 바랍니다. 삭제