내보내지 않은 구조체 내에서 유형 캐스팅 사용
Go에서는 구조체의 동일한 필드에 대해 여러 JSON 태그를 정의할 수 없습니다. 그러나 내보내지 않은 구조체 사이에 캐스팅을 사용하는 해결 방법이 있습니다.
먼저 예와 같이 서로 다른 JSON 태그를 사용하여 동일한 구조의 구조체 두 개를 만듭니다.
type Foo struct { Name string `json:"name"` Age int `json:"age"` } type Bar struct { Name string `json:"employee_name"` // Age omitted with backtick syntax Age int `json:"-"` }
이제 Bar를 내보내지 않도록 만듭니다. 이름을 소문자로 시작:
type bar struct { Name string `json:"employee_name"` Age int `json:"-"` }
Foo에서 bar로 변환하려면 Foo를 캐스팅하세요. 아래와 같이 *bar로 변환:
f := Foo{Name: "Sam", Age: 20} b := (*bar)(unsafe.Pointer(&f)) // b now has the modified JSON tags
주의:
예:
package main import "fmt" import "unsafe" type Foo struct { Name string `json:"name"` Age int `json:"age"` } type bar struct { Name string `json:"employee_name"` Age int `json:"-"` } func main() { f := Foo{Name: "Sam", Age: 20} b := (*bar)(unsafe.Pointer(&f)) fmt.Println(b.Name, b.Age) // Output: Sam 0 // Changing f.Age affects b.Age f.Age = 30 fmt.Println(b.Name, b.Age) // Output: Sam 30 }
위 내용은 내보내지 않은 구조체 및 유형 캐스팅을 사용하여 Go의 JSON 태그 제한 사항을 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!