Golang では、構造体とメソッドを使用して、カプセル化されたモデルの共通機能を実装できます。構造体は、関連するデータとメソッドをカプセル化するために使用できるカスタム データ型です。メソッドは構造体に関連付けられた関数であり、メソッド内で構造体のメンバーにアクセスして操作できます。関数を構造体として定義すると、関数を特定の構造体に関連付けて、カプセル化されたモデルで一般的な操作を実装できます。 Golang では、レシーバーを使用してメソッドが属する構造を指定できます。レシーバーは値型またはポインター型にすることができ、ニーズに応じて適切なレシーバー型を選択してください。構造メソッドを定義することで、フィールド値の取得または設定、特定の操作の実行などの一般的な操作をカプセル化されたモデルに実装できます。このようにして、構造体のメソッドを呼び出すことでカプセル化されたデータにアクセスして操作できるようになり、より柔軟で再利用可能なコードが実現します。
モデルとして 2 つのパッケージがあります:
###カテゴリー:### リーリー ###教師:### リーリーreaddata 関数が繰り返し実行されていることがわかります。これで、
class.readdata()と
Teacher.readdata() を使用してチャネルからデータを呼び出すことができます。
2 つのパッケージで使用する readdata() 関数を作成するにはどうすればよいですか?
次のようなジェネリックスを使用する基本パッケージを作成してみました:
しかし、
m.modelsが見つかりません。つまり、
Teachers.Teachers または classes.classes
は使用できません
この場合の対処法を教えてください解決策
ジェネリックス (go 1.18 で導入) を使用します。 json からデコードされてチャネルに渡される値を表すパラメータ型を使用して
readdata()注: エラーをチェックし、エラーを報告する必要があります (base.readjson()
からのエラーを含む)。
呼び出し例:
リーリー
読み取り値の数を返すのは冗長であることに注意してください。返されたチャネルを正しく閉じたので、呼び出し元は返されたチャネルで
を使用でき、チャネルは送信されたすべての値を正しく受信して終了します。
また、チャネルに戻るときにすべての値が準備完了 (デコード) されているため、この同時実行は冗長であり、効率が低下するだけであることにも注意してください。デコードされた値のスライスがあるので、それを返し、呼び出し元にそれを処理する方法 (同時または非同時) を選択させます。
したがって、
は次のようになります:
リーリー また、入力 json オブジェクトにフィールドが 1 つしかない場合、fieldname
を渡す必要はなく、次のようにデコードされた
マップから値を取得できることにも注意してください。 # #
リーリー
これを呼び出すのは簡単です:
リーリー
以上がGolang でカプセル化されたモデルの共通機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。