>백엔드 개발 >Golang >멤버는 동일하지만 유형이 다른 Go 구조체 간에 효율적으로 변환하려면 어떻게 해야 합니까?

멤버는 동일하지만 유형이 다른 Go 구조체 간에 효율적으로 변환하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-13 16:19:10121검색

How Can I Efficiently Convert Between Go Structs with Identical Members but Different Types?

멤버는 동일하지만 유형이 다른 구조체 변환

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

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