首頁 >後端開發 >Golang >如何在 Go 結構中同時儲存 String 和 Int 值?

如何在 Go 結構中同時儲存 String 和 Int 值?

Patricia Arquette
Patricia Arquette原創
2024-12-03 10:58:09934瀏覽

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

在Go 結構體中儲存String 和Int 值

在Go 中,不可能將string 和int 值直接儲存在結構體中單一結構體字段。這是由於該語言的強型別系統,它要求變數具有特定的、定義良好的類型。

可能的解決方案

要解決此限制,您可以幾個選項:

  1. 動態轉換輸入:您可以轉換在需要時將int 輸入轉換為字串,並在處理時將其轉換回int。
  2. 定義多個結構體:您可以為不同的輸入類型定義單獨的結構體,例如 testCaseString 和 testCaseInt。
  3. 介面實作:從 Go 1.18 開始,你可以將介面當作一個解決方法。雖然 Go 沒有原生的 sum 類型,但它允許您定義多種類型可以實現的介面。

Go 1.18 及更高版本中的接口實現

使用接口,您可以創建可以同時保存字符串和整數值的類型。這是一個範例:

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或更高等級的工作。

以上是如何在 Go 結構中同時儲存 String 和 Int 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn