ホームページ >バックエンド開発 >Golang >Go ジェネリックスを使用したシングルトン パターン

Go ジェネリックスを使用したシングルトン パターン

WBOY
WBOY転載
2024-02-05 22:54:07781ブラウズ

带有 Go 泛型的单例模式

質問の内容

golang でジェネリック変数のシングルトンを実装する最も最悪の方法を見つけようとしています。グローバル変数でプレーンな sync.once パターンを使用しても、共通の型情報が利用できないため機能しません (下記)。

この例は不自然ですが、実際には、シングルトンを維持するコードは、t (ライブラリなど) を定義するクライアント コードから分離できます。

次のライブラリ コードを想定しますが、t の具体的な値は不明です:

リーリー

そして、tstring として定義されているこの別のクライアント コードを想定します。 リーリー

これを達成するための最良の方法は何ですか?


正解


結局、

atomic.pointer APIを使用してこの問題を解決し、他の興味のある人が使用できるようにシンプルなライブラリに統合しました。 : 一行。シングレットを使用して元の投稿を再処理すると、次のようになります:

サンプル ライブラリ コード:

リーリー

クライアントコード:

リーリー

そして、この機能をサポートする

singlet ライブラリ コード: リーリー

これが、この状況に遭遇した他の人にとって役立つことを願っています。

以上がGo ジェネリックスを使用したシングルトン パターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。