>백엔드 개발 >Golang >Reflect.MakeSlice가 주소 지정이 불가능한 값을 반환하는 이유는 무엇입니까?

Reflect.MakeSlice가 주소 지정이 불가능한 값을 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-10 12:58:14730검색

Why does reflect.MakeSlice return an un-addressable value?

reflect.MakeSlice가 주소 지정이 불가능한 값을 반환하는 이유는 무엇입니까?

Reflection을 사용하여 슬라이스 포인터 얻기

Reflection을 사용하여 슬라이스에 대한 포인터를 검색하려면 반사, Reflect.New() 활용:

사용을 기억하세요 x.Interface()를 사용하여 실제 값 대신 Reflect.Value를 함수에 전달하는 것을 방지합니다.

reflect.MakeSlice의 주소 지정 취소 가능성 이해

주소 지정 가능한 값은 해당 주소가 다음을 가리키는지 확인합니다. 의미있는 위치. 함수 내의 스택에 대한 할당은 이를 보장하지 않으므로 주소 지정이 불가능합니다.

reflect.MakeSlice는 값을 배열, 구조체 또는 역참조된 포인터의 요소로 주소 지정하지 않고 힙의 로컬 슬라이스에 할당합니다. . 따라서 주소 지정이 불가능한 값을 반환합니다.

왜 슬라이스 포인터가 필요한가요?

mgo의 iter.All과 같은 함수에서는 슬라이스가 추가되는 경우가 많기 때문에 포인터가 필요한 경우가 많습니다. 추가하면 호출자에게 전달되어야 하는 슬라이스의 메모리 주소가 변경됩니다.

위 내용은 Reflect.MakeSlice가 주소 지정이 불가능한 값을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.