Go での複数のデータ型の構造体フィールドの宣言と使用
Go では、関連データを表す構造体を定義できます。しかし、構造体フィールドに文字列値と整数値の両方を格納できるようにしたい場合はどうすればよいでしょうか?
この問題をよりよく理解するには、次の構造体を考慮してください:
type testCase struct { input string isValid bool }
この構造体は次のように設計されています。 input が文字列で isValid がブール値であるテスト ケースを保存します。シナリオによっては、入力を文字列または int にできるようにしたい場合があります。
最初に、処理中に int 入力を文字列に変換し、int に戻すことを検討するかもしれません。ただし、このアプローチは非効率的でエラーが発生しやすくなります。
別のオプションとして、testCaseInt と testCaseStruct などの 2 つの別個の構造体を定義することもできます。これで問題は解決しますが、不必要なコードの重複が発生します。
インターフェイスを使用して、単一の構造体フィールドに異なるデータ型を格納することは可能ですか?
いいえ、1.18 より前の Go バージョンでは不可能です。 Go の型システムは、データの複数のバリアントを表現できる型である合計型をサポートしていません。
Go 1.18 では、ジェネリックの導入により合計型がサポートされる予定です。ただし、それまでは、この機能を実現する組み込みの方法はありません。
以上がGo の単一の構造体フィールドに異なるデータ型を格納できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。