ホームページ > バックエンド開発 > Golang > 型アサーションに基づいて正しい型の変数を動的に作成できますか?

型アサーションに基づいて正しい型の変数を動的に作成できますか?

Susan Sarandon
リリース: 2024-11-25 12:14:12
オリジナル
412 人が閲覧しました

Can Go Create Variables with the Correct Type Dynamically Based on Type Assertions?

型キャストのジレンマ: 正しい型で変数を作成する

Go では、関数は多くの場合、同様のフィールドを持つ複数の構造体からデータを処理するためのインターフェイスを受け取り、メソッド。ただし、型アサーション (例: data.(type)) を繰り返し使用して特定の型の変数を作成するのは面倒な場合があります。

質問: 正しい型ベースの単一変数を作成できますか?最初の型アサーションに基づいて、それを一貫して使用します。 function?

答え:

残念ながら、実行時に目的の型で変数を作成することは、Go では直接実行できません。静的に型付けされた言語として、変数の型はコンパイル中に決定する必要があります。また、Go にはジェネリックスがないため、さまざまな型を動的に処理する機能が制限されています。

考えられる解決策:

  1. インターフェイスの作成:

    • 一般的な操作を表すインターフェイスを定義します。別の構造体で実行する必要があります。
    • 具体的な構造体にこのインターフェイスを実装させます。
    • 関数パラメータをインターフェイス型に変更し、型アサーションの必要性を排除します。
  2. を使用するリフレクション:

    • リフレクションを使用すると、実行時に名前に基づいて構造体の共通フィールドにアクセスできます。
    • ただし、リフレクションはコンパイル時の型アサーションに比べて遅く、信頼性が低くなります。フォールバックとしてのみ使用してください。

以上が型アサーションに基づいて正しい型の変数を動的に作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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