Go에서 구조체 조각 간 유형 변환
문제:
익명 구조체 조각을 비익명 구조체 조각으로 변환하면 오류가 발생합니다. 이는 JSON 태그가 있거나 없는 구조체의 동등성과 다양한 슬라이스의 호환성에 대한 질문을 제기합니다.
답변:
구조체 유형 간의 차이점:
다른 JSON 태그가 있는 구조체는 태그가 JSON 데이터의 인코딩 및 디코딩에 영향을 주기 때문에 다른 유형으로 간주됩니다.
변환 옵션:
1. Copy Through Iteration:
권장되는 방법이지만 속도가 느리고 장황합니다. 익명 구조체 슬라이스의 각 요소를 비익명 구조체 슬라이스로 복사하는 작업이 포함됩니다.
<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(&res)), nil</code>
경고:
안전하지 않은 변환은 예측할 수 없는 동작을 초래할 수 있으므로 일반적인 사용에는 권장되지 않습니다. 이를 사용하면 메모리 손상이나 기타 예상치 못한 오류가 발생할 수 있습니다.
위 내용은 Go에서 익명 구조체 조각을 비익명 구조체 조각으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!