>백엔드 개발 >Golang >구조 주소로 인터페이스 값을 읽는 방법

구조 주소로 인터페이스 값을 읽는 방법

WBOY
WBOY앞으로
2024-02-10 19:21:08771검색

구조 주소로 인터페이스 값을 읽는 방법

Go 언어에서 인터페이스는 매우 강력하고 유연한 유형입니다. 그러나 인터페이스 값에서 구조 주소를 읽으려고 할 때 약간의 혼란이 발생할 수 있습니다. 그렇다면 구조체 주소가 있는 인터페이스 값을 어떻게 읽습니까? 이 기사에서는 이 질문에 대한 답변을 제공하고 몇 가지 실용적인 팁과 샘플 코드를 제공합니다. 당신이 초보자이든 숙련된 Go 개발자이든 이 글이 도움이 될 것입니다. 한 번 보자!

질문 내용

데이터 유형의 변수interface{}가 있고 여기에 구조체의 주소를 전달합니다. 이제 인터페이스에서 필드를 읽을 수 없습니다

코드는 다음과 같습니다.

으아아아

res.data.username를 사용하면 오류가 발생합니다

인터페이스에서 구조 필드를 읽는 방법은 무엇입니까?

해결 방법

이것을 golang과 비교하세요. 해당 구조체를 json으로 마샬링한 후에도 go 구조체에 존재하지 않는 필드가 여전히 존재하는 이유는 무엇입니까? 처음에는 둘이 같은 줄 알았습니다. 그러나 그것은 사실이 아닌 것으로 밝혀졌습니다.

이 질문의 경우 res.data 拥有 *userdata 유형의 값입니다. 따라서 간단한 유형 주장이 가능합니다.

으아아아

다음 데모는 @mkopriva의 두 데모를 병합하여 차이점을 보여줍니다.

으아아아

출력은 다음과 같습니다.

으아아아

위 내용은 구조 주소로 인터페이스 값을 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제