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

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

DDD
풀어 주다: 2024-10-27 07:50:31
원래의
976명이 탐색했습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿