在 go 中,是否可以以某種方式動態轉換變量?例如,如果一個簡單的演員表是:var intAge = interfaceAge.(int)如果我事先不知道 age 是 int 怎么辦?一種簡單的寫法是var x = getType()var someTypeAge = interfaceAge(.x)有沒有辦法實現這樣的目標?反射包提供了一些在運行時確定或轉換類型的方法 - 但我找不到像上面提到的任何東西(適用于所有類型的通用方案)。
1 回答

一只萌萌小番薯
TA貢獻1795條經驗 獲得超7個贊
不,你不能。Go 是一種靜態類型語言。變量的類型是在編譯時確定的。
如果你想動態確定type一個interface{}你可以使用類型切換:
var t interface{}
t = functionOfSomeType()
switch t := t.(type) {
default:
fmt.Printf("unexpected type %T", t) // %T prints whatever type t has
case bool:
fmt.Printf("boolean %t\n", t) // t has type bool
case int:
fmt.Printf("integer %d\n", t) // t has type int
case *bool:
fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool
case *int:
fmt.Printf("pointer to integer %d\n", *t) // t has type *int
}
- 1 回答
- 0 關注
- 175 瀏覽
添加回答
舉報
0/150
提交
取消