멤버는 동일하지만 유형이 다른 구조체 변환
Go에서는 멤버는 동일하지만 유형이 다른 두 구조체가 있는 상황이 발생할 수 있습니다. . 이는 한 구조체에서 다른 구조체로 값을 복사해야 할 때 문제가 될 수 있습니다.
사용 사례 예시
다음 예시를 고려하세요.
type Common struct { Gender int From string To string } type Foo struct { Id string Name string Extra Common } type Bar struct { Id string Name string Extra Common }
Foo 유형의 변수 foo가 있고 해당 값을 bar 유형의 변수에 복사한다고 가정합니다. Bar.
변환 접근 방식
Foo와 Bar의 기본 유형은 구조체 태그를 제외하고 동일하므로 유형 변환을 사용하여 값을 복사할 수 있습니다. 이를 수행하는 방법은 다음과 같습니다.
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo)
위 코드에서 Bar(foo) 변환은 foo 값을 Foo 유형에서 Bar로 명시적으로 변환합니다. 이는 기본 유형이 동일하기 때문에 가능합니다.
Playground 예제
<br>package main</p> <p>import "fmt"</p> <p>type 공통 구조체 {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Gender int From string To string
}
type Foo struct {
Id string Name string Extra Common
}
type Bar struct {
Id string Name string Extra Common
}
func 메인() {
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo) fmt.Println(bar)
}
Output
{123 Joe {0 "" ""}}
보시다시피 foo의 값은 성공적으로 복사되었습니다 bar.
참고:
변환 접근 방식은 구조체 태그를 제외하고 구조체의 기본 유형이 동일한 경우에만 작동합니다. 기본 유형이 다른 경우 멤버별로 값을 수동으로 복사해야 합니다.
위 내용은 멤버는 동일하지만 유형이 다른 Go 구조체 간에 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!