ホームページ >バックエンド開発 >Golang >Golang で共有フィールドを持つ関数のコードの繰り返しを回避するには?

Golang で共有フィールドを持つ関数のコードの繰り返しを回避するには?

DDD
DDDオリジナル
2024-10-27 07:50:31969ブラウズ

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>

次に、カスタム型にアタッチされたメソッドを使用して、両方の構造体から Version フィールドにアクセスして出力できます。

<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>

このアプローチにより、異なる構造体から Version フィールドを出力する機能を維持しながら、コードの繰り返しを回避できます。関数をカスタム型のメソッドとして定義すると、その型を埋め込むすべての構造体に同じ実装が使用されるようになります。

以上がGolang で共有フィールドを持つ関数のコードの繰り返しを回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。