>  기사  >  백엔드 개발  >  Golang에서 공유 필드가 있는 함수에 대한 코드 반복을 피하는 방법은 무엇입니까?

Golang에서 공유 필드가 있는 함수에 대한 코드 반복을 피하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-27 07:50:31863검색

How to Avoid Code Repetition for Functions with Shared Fields in Golang?

Golang에서 공유 필드가 있는 함수에 대한 코드 반복 방지

동일한 필드를 가진 여러 구조체에 대한 함수를 작성할 때 코드 중복을 방지하려면 다음을 고려하세요. 다음 접근 방식:

각 구조체에 대해 별도의 함수를 정의하는 대신 버전 문자열과 같은 공유 필드에 대한 사용자 정의 유형을 만듭니다. 이 유형은 구현하려는 기능에 대한 메소드 수신자 역할을 할 수 있습니다.

<code class="go">type Version string

func (v Version) PrintVersion() {
    fmt.Println("Version is", v)
}</code>

구조체에서 구성을 사용하여 사용자 정의 유형을 필드로 포함합니다.

<code class="go">type Game struct {
    Name               string
    MultiplayerSupport bool
    Genre              string
    Version
}

type ERP struct {
    Name               string
    MRPSupport         bool
    SupportedDatabases []string
    Version
}</code>

이제, 사용자 정의 유형에 연결된 메서드를 사용하여 두 구조체 모두에서 버전 필드에 액세스하고 인쇄할 수 있습니다.

<code class="go">func main() {

    g := Game{
        "Fear Effect",
        false,
        "Action-Adventure",
        "1.0.0",
    }

    g.PrintVersion()
    // Version is 1.0.0


    e := ERP{
        "Logo",
        true,
        []string{"ms-sql"},
        "2.0.0",
    }

    e.PrintVersion()
    // Version is 2.0.0

}</code>

이 접근 방식을 사용하면 다른 구조체에서 버전 필드를 인쇄하는 기능을 유지하면서 코드 반복을 피할 수 있습니다. 함수를 사용자 정의 유형의 메소드로 정의함으로써 해당 유형을 포함하는 모든 구조체에 동일한 구현이 사용되도록 할 수 있습니다.

위 내용은 Golang에서 공유 필드가 있는 함수에 대한 코드 반복을 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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