ホームページ > バックエンド開発 > Golang > インターフェイスのメソッドチェーンを行うにはどうすればよいですか?

インターフェイスのメソッドチェーンを行うにはどうすればよいですか?

PHPz
リリース: 2024-02-13 08:39:08
転載
925 人が閲覧しました

インターフェイスのメソッドチェーンを行うにはどうすればよいですか?

php エディタ Xiaoxin では、インターフェイスのメソッドをチェーンする方法について紹介します。メソッド チェーンは、1 つのステートメントで複数のメソッドを連続的に呼び出すことができる洗練されたプログラミング手法であり、コードの単純さと読みやすさを向上させます。この記事では、メソッド チェーン プログラミングをより適切に適用し、コードの効率と保守性を向上させるために、インターフェイスのメソッド チェーンを実装する方法に関するヒントと注意事項を詳しく紹介します。一緒に探検しましょう!

質問内容

obj.withx().withy().withz()のようなことをしたいのですが。 obj にはさまざまな型を含めることができるため、インターフェイスを使用します。

残念ながら、objnil になることもあります。この場合、nil インターフェースでメソッドを呼び出しており、go はどのメソッドを呼び出すべきかわからないため、メソッドチェーンはパニックになります。

これは再現可能な最小限の例です

nil である可能性のあるオブジェクトに対してメソッド チェーンを引き続き使用するにはどうすればよいですか?

  • withx() やその他の関数のデフォルト実装を提供する方法はありますか?
  • 各属性関数が関数を返すパターンも考えましたが、これは複雑すぎるようです
  • obj.WithX().WithY()    // of type func() myInterface
    obj.WithX().WithY()()  // now I got the actual object.
    ログイン後にコピー
回避策

これらのコメント

はほとんど 正しいですが、実際には untyped nil を返すことはできません。 リーリー

https://www.php.cn/link/845c31a2fbc3d2e14ecb17d48dcc65a4

したがって、基本的に必要なのは「デフォルト」型だけです。これは nil であってもインターフェイスを実装します。

以上がインターフェイスのメソッドチェーンを行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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