在Go語言中,可以使用類型斷言 .(Type)
或者 Type.(interface)
來進行接口類型轉換。
.(Type)
:通過將接口類型轉換為具體類型來操作。var i interface{} = "Hello"
s := i.(string)
fmt.Println(s) // Output: Hello
n, ok := i.(int)
fmt.Println(n, ok) // Output: 0 false
Type.(interface)
:通過將具體類型轉換為接口類型來操作。var s string = "Hello"
i := interface{}(s)
fmt.Println(i) // Output: Hello
需要注意的是,如果斷言失敗或者轉換失敗,會導致運行時錯誤,因此在進行類型轉換之前最好使用類型斷言來判斷接口是否可以轉換為特定的類型。可以通過使用空白標識符 _
來忽略不需要的返回值。
var i interface{} = 42
if s, ok := i.(string); ok {
fmt.Println(s) // Output: 42
} else {
fmt.Println("Conversion failed")
}
另外,還可以使用 switch
語句來進行多個類型的斷言。
var i interface{} = 42
switch v := i.(type) {
case int:
fmt.Println("Integer:", v)
case string:
fmt.Println("String:", v)
default:
fmt.Println("Unknown type")
}
上述代碼會根據 i
的類型進行不同的處理。如果 i
是 int
類型,則輸出 “Integer: 42”;如果 i
是 string
類型,則輸出 “String: 42”;否則輸出 “Unknown type”。