Golang でカプセル化されたモデルの共通機能を実装するにはどうすればよいですか?

PHPz
リリース: 2024-02-11 23:42:09
転載
1066 人が閲覧しました

Golang でカプセル化されたモデルの共通機能を実装するにはどうすればよいですか?

Golang では、構造体とメソッドを使用して、カプセル化されたモデルの共通機能を実装できます。構造体は、関連するデータとメソッドをカプセル化するために使用できるカスタム データ型です。メソッドは構造体に関連付けられた関数であり、メソッド内で構造体のメンバーにアクセスして操作できます。関数を構造体として定義すると、関数を特定の構造体に関連付けて、カプセル化されたモデルで一般的な操作を実装できます。 Golang では、レシーバーを使用してメソッドが属する構造を指定できます。レシーバーは値型またはポインター型にすることができ、ニーズに応じて適切なレシーバー型を選択してください。構造メソッドを定義することで、フィールド値の取得または設定、特定の操作の実行などの一般的な操作をカプセル化されたモデルに実装できます。このようにして、構造体のメソッドを呼び出すことでカプセル化されたデータにアクセスして操作できるようになり、より柔軟で再利用可能なコードが実現します。

質問の内容

モデルとして 2 つのパッケージがあります:

###カテゴリー:### リーリー ###教師:### リーリー

readdata 関数が繰り返し実行されていることがわかります。これで、

class.readdata()

Teacher.readdata()

を使用してチャネルからデータを呼び出すことができます。 2 つのパッケージで使用する readdata() 関数を作成するにはどうすればよいですか? 次のようなジェネリックスを使用する基本パッケージを作成してみました:

リーリー

しかし、

m.models

が見つかりません。つまり、

Teachers.Teachers

または classes.classes は使用できません この場合の対処法を教えてください解決策

ジェネリックス (go 1.18 で導入) を使用します。 json からデコードされてチャネルに渡される値を表すパラメータ型を使用して

readdata()

関数を作成します。

注: エラーをチェックし、エラーを報告する必要があります (base.readjson() からのエラーを含む)。

リーリー

呼び出し例: リーリー 読み取り値の数を返すのは冗長であることに注意してください。返されたチャネルを正しく閉じたので、呼び出し元は返されたチャネルで

for range

を使用でき、チャネルは送信されたすべての値を正しく受信して終了します。

また、チャネルに戻るときにすべての値が準備完了 (デコード) されているため、この同時実行は冗長であり、効率が低下するだけであることにも注意してください。デコードされた値のスライスがあるので、それを返し、呼び出し元にそれを処理する方法 (同時または非同時) を選択させます。 したがって、

readdata()

は次のようになります:

リーリー

また、入力 json オブジェクトにフィールドが 1 つしかない場合、fieldname を渡す必要はなく、次のようにデコードされた

m

マップから値を取得できることにも注意してください。 # # リーリー これを呼び出すのは簡単です: リーリー

以上がGolang でカプセル化されたモデルの共通機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!