ホームページ > バックエンド開発 > Golang > インターフェイスを使用して Go 構造体に文字列と整数の両方を格納するにはどうすればよいですか?

インターフェイスを使用して Go 構造体に文字列と整数の両方を格納するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-17 07:54:03
オリジナル
325 人が閲覧しました

How Can I Store Both Strings and Integers in a Go Struct Using an Interface?

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

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