>  기사  >  백엔드 개발  >  Go - 포인터를 구조체 슬라이스로 인터페이스 슬라이스로 변환합니다.

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

WBOY
WBOY앞으로
2024-02-09 14:57:081109검색

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

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

질문 내용

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

으아악

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

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

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

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

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

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

해결 방법

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

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

으아악

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

으아악

출력:

으아악

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

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