ホームページ  >  記事  >  バックエンド開発  >  Go の単一の構造体フィールドに異なるデータ型を格納できますか?

Go の単一の構造体フィールドに異なるデータ型を格納できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-15 16:27:03772ブラウズ

Can You Store Different Data Types in a Single Struct Field in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。