>  기사  >  백엔드 개발  >  Go에서 구조체 조각 간을 안전하게 변환하는 방법: 유형 변환 및 모범 사례 가이드

Go에서 구조체 조각 간을 안전하게 변환하는 방법: 유형 변환 및 모범 사례 가이드

Linda Hamilton
Linda Hamilton원래의
2024-10-31 10:50:02298검색

How to Safely Convert Between Slices of Structs in Go: A Guide to Type Conversion and Best Practices

Go에서 구조체 조각 간 유형 변환

Go에서 구조체 조각으로 작업할 때 다양한 구조체 조각 간의 차이점을 이해하는 것이 중요합니다. 유형. 이 경우 다음 유형이 있습니다.

  • ListSociete: Societe 구조체 목록을 저장하는 데 사용되는 사용자 정의 구조체 유형입니다.
  • [ ]Societe: Societe 구조체의 조각.
  • []struct{Name string json:"a.name"}: 단일 필드 Name 및 JSON 태그.

질문 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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