ホームページ > バックエンド開発 > Golang > String 値と Int 値の両方を Go 構造体に格納するにはどうすればよいでしょうか?

String 値と Int 値の両方を Go 構造体に格納するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2024-12-03 10:58:09
オリジナル
944 人が閲覧しました

How Can You Store Both String and Int Values in a Go Struct?

文字列値と整数値の両方を Go 構造体に保存する

Go では、文字列値と整数値の両方を構造体に直接保存することはできません。単一の構造体フィールド。これは、言語の強力な型システムによるもので、変数には特定の明確に定義された型が必要です。

考えられる解決策

この制限を回避するには、次のようにします。いくつかのオプション:

  1. 入力を動的に変換します:必要に応じて int 入力を文字列に変換し、処理時に int に戻すことができます。
  2. 複数の構造体の定義: testCaseString や testCaseString など、さまざまな入力タイプに対して個別の構造体を定義できます。 testCaseInt.
  3. インターフェイス実装: Go 時点1.18 では、回避策としてインターフェイスを使用できます。 Go にはネイティブの sum 型がありませんが、複数の型で実装できるインターフェイスを定義できます。

Go 1.18 以降でのインターフェイスの実装

インターフェイスを使用すると、string 値と int 値の両方を保持できる型を作成できます。以下に例を示します。

type Input interface {
    IsValid() bool
    Value() interface{}
}

type TestCaseBool struct {
    input   bool
    isValid bool
}

func (tc TestCaseBool) IsValid() bool {
    return tc.isValid
}

func (tc TestCaseBool) Value() interface{} {
    return tc.input
}
ログイン後にコピー

TestCaseBool 構造体を使用して、ブール値または空のインターフェイスを保持できるようになりました。

注: このソリューションには Go 1.18 が必要です。またはそれ以上のレベルで動作します。

以上がString 値と Int 値の両方を Go 構造体に格納するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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