Go - 포인터를 구조체 슬라이스로 인터페이스 슬라이스로 변환합니다.

WBOY
풀어 주다: 2024-02-09 14:57:08
앞으로
1083명이 탐색했습니다.

Go - 将指向结构切片的指针转换为接口切片

php editor Baicao Go 프로그래밍 언어에서는 구조 슬라이스에 대한 포인터를 인터페이스 슬라이스로 변환해야 하는 경우가 있습니다. 이 변환은 슬라이스의 요소를 수정해야 하는 경우와 같은 일부 특정 상황에서 매우 유용합니다. 포인터를 인터페이스 슬라이스로 변환하면 데이터 일관성 및 동기화 문제에 대한 걱정 없이 슬라이스의 요소에 쉽게 액세스하고 수정할 수 있습니다. 이 기사에서는 이러한 변환 방법을 설명하고 실제 적용 사례를 몇 가지 제공합니다.

질문 내용

다음 예제를 만들기 위해 일부 프로덕션 GoLang 코드를 잘라냈습니다.

으아악

저는 많은 구조체를 가지고 있으며 모두 동일한 인터페이스를 구현합니다.

JSON에서 역직렬화한 후 로드된 각 개체에 대해 메서드를 호출하여 개체 초기화를 완료하려는 아이디어입니다. 일부 JSON 파일에는 최상위 배열이 있습니다. 즉, 일단 역직렬화되면 구조의 목록/슬라이스입니다.

그러나 다음 작업을 동시에 수행할 수 있는 명령문 조합을 찾을 수 없습니다.

  • 실행 json.Unmarshal()
  • 로드된 각 구조와 호출 메서드를 반복합니다.

분명히 이것을 두 가지 기능(loadData 및 초기화Data)으로 나누어 두 기능을 모두 수행할 수 있습니다.

이것을 단일 방식으로 작동하도록 재구성할 수 있는 방법이 있나요?

해결 방법

메서드를 Initializer 인터페이스를 구현하는 멤버가 포함된 구조체 조각을 허용하는 일반 메서드로 선언할 수 있습니다.

이를 위해 다음과 같이 메소드를 선언할 수 있습니다.

으아악

이렇게 하려면 슬라이스 값을 구조체의 포인터 수신자 메서드와 함께 사용할 포인터로 선언해야 합니다(예: []*AlphaStruct[]AlphaStruct).

으아악

출력:

으아악

위 내용은 Go - 포인터를 구조체 슬라이스로 인터페이스 슬라이스로 변환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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