Go 構造体での文字列と整数値の結合: インターフェイスの使用
Go では、データ構造が必要なシナリオに遭遇することがあります。文字列と整数値の両方を保存します。次の構造体定義について考えてみましょう。
type testCase struct { input string isValid bool }
ただし、ユースケースに応じて、入力を文字列または整数として処理すると便利な場合があります。これを実現するには、以下に示すインターフェイスを使用できます。
type Input interface { String() string }
文字列型と整数型のインターフェイスの実装
両方の入力インターフェイスを実装できます。文字列と整数:
type StringInput string func (s StringInput) String() string { return string(s) } type IntegerInput int func (i IntegerInput) String() string { return strconv.Itoa(int(i)) }
構造体での入力インターフェイスの使用
これで、入力インターフェイスを使用するように testCase 構造体を変更できます:
type testCase struct { input Input isValid bool }
サンプル コード
このインターフェイスを使用して文字列と整数値の両方を格納および取得する方法の例を次に示します。
package main import ( "fmt" "strconv" ) type Input interface { String() string } type StringInput string func (s StringInput) String() string { return string(s) } type IntegerInput int func (i IntegerInput) String() string { return strconv.Itoa(int(i)) } type testCase struct { input Input isValid bool } func main() { // Create a test case with a string input testString := testCase{ input: StringInput("Hello, world!"), isValid: true, } // Print the input as a string fmt.Println(testString.input.String()) // Output: Hello, world! // Create a test case with an integer input testInt := testCase{ input: IntegerInput(123), isValid: true, } // Print the input as a string fmt.Println(testInt.input.String()) // Output: 123 }
入力インターフェイスを使用すると、Go 構造体で文字列と整数値の両方をシームレスに処理できるため、柔軟性とコードの再利用性が向上します。
以上がインターフェイスを使用して Go 構造体に文字列と整数の両方を格納するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。