Go에서 구조체 조각 간 유형 변환
Go에서 구조체 조각으로 작업할 때 다양한 구조체 조각 간의 차이점을 이해하는 것이 중요합니다. 유형. 이 경우 다음 유형이 있습니다.
질문 1: []struct{Name string}과 []struct{Name string json:"a.name" }은 다른가요?
예, JSON 태그 json:"a.name" 때문에 다릅니다. Go 사양에는 두 구조체 유형이 동일한 필드, 이름, 유형, 및 태그가 있는 경우에만 동일하다고 명시되어 있습니다.
질문 2: ListSociete는 []struct{Name string}과 다릅니까?
예, ListSociete는 사용자 정의 유형이고 []struct{Name string}은 익명 유형이기 때문에 다릅니다. 필드 이름도 다릅니다.
_해결책:
이러한 유형 간 변환에는 두 가지 옵션이 있습니다.
옵션 1: 반복을 통한 복사
이 방법은 안전하고 신뢰할 수 있지만 명시적인 복사가 필요합니다.
<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>
이 메서드는 예기치 않은 동작이 발생할 수 있으므로 주의해서 사용해야 합니다. .
_플레이그라운드 예시: http://play.golang.org/p/lfk7qBp2Gb
위 내용은 Go에서 구조체 조각 간을 안전하게 변환하는 방법: 유형 변환 및 모범 사례 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!