>백엔드 개발 >Golang >Golang에서 익명 구조체 조각을 정의된 구조체 조각으로 변환하는 방법은 무엇입니까?

Golang에서 익명 구조체 조각을 정의된 구조체 조각으로 변환하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-26 16:33:30534검색

How to Convert a Slice of Anonymous Structs to a Slice of Defined Structs in Golang?

Golang의 구조체 조각 간 유형 변환

이 문의는 구조체 조각 간의 유형 변환에 중점을 둡니다. 구체적으로 우리는 익명 구조체 조각을 정의된 구조체 조각으로 변환하는 것을 목표로 합니다.

기본 문제

이 문제는 두 구조체 유형의 차이로 인해 발생합니다.

  • Name이라는 단일 필드가 있는 Societe 구조체
  • json으로 태그가 지정된 Name이라는 단일 필드가 있는 익명 구조체:"a.name"

태그의 존재 별도의 구조체 유형을 생성하여 직접 변환을 방지합니다.

솔루션 옵션

옵션 1: 반복 및 복사

  • 두 조각과 조각을 모두 반복합니다. 익명 구조체의 각 필드를 Societe 구조체에 수동으로 복사합니다.
  • 이 접근 방식은 안전하고 안정적이지만 반복적 특성으로 인해 효율성이 떨어집니다.
<code class="go">ls := make(ListSociete, len(res))
for i := 0; i < len(res); i++ {
    ls[i].Name = res[i].Name
}
return ls, nil</code>

옵션 2: 안전하지 않은 변환

  • 안전하지 않은 포인터를 사용한 직접 유형 변환
  • 이 방법은 유형 검사를 우회하며 기본 데이터 구조가 예기치 않게 변경되면 런타임 오류가 발생할 수 있습니다.
  • 주의: 이 접근 방식은 유형 안전성을 손상시키므로 주의해서 사용하십시오.
<code class="go">return *(*ListSociete)(unsafe.Pointer(&amp;res)), nil</code>

모범 사례

  • 표현할 적절한 구조체 정의 데이터 모델.
  • 유형 안전성을 유지하기 위해 필요한 경우 명시적인 유형 변환을 사용하세요.
  • 신뢰할 수 있는 변환을 위해 안전한 반복 및 복사 접근 방식을 선택하세요.

위 내용은 Golang에서 익명 구조체 조각을 정의된 구조체 조각으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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