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 サイトの他の関連記事を参照してください。