前提重點:類型斷言究驴,先轉換 ,再斷言(判斷是否轉換成功)
Go語言中洒忧,類型斷言用于將接口類型的變量轉換為具體類型。類型斷言的語法如下:
value, ok := interfaceVariable.(ConcreteType)
-
interfaceVariable
是一個接口類型的變量够颠。 -
ConcreteType
是你希望將接口變量轉換成的具體類型。 -
value
是轉換后的具體類型的值履磨。 -
ok
是一個布爾值蛉抓,表示類型斷言是否成功蹬耘。如果成功,ok
為true
综苔,否則為false
。
如果類型斷言失敗如筛,ok
為 false
堡牡,value
將是具體類型的零值杨刨。
示例
以下是一個具體的例子,演示如何使用類型斷言:
package main
import (
"fmt"
)
func main() {
var i interface{} = "hello"
// 類型斷言妖胀,將接口類型變量 i 轉換為字符串類型
s, ok := i.(string)
if ok {
fmt.Println("String value:", s)
} else {
fmt.Println("Type assertion failed")
}
// 嘗試將接口類型變量 i 轉換為 int 類型
n, ok := i.(int)
if ok {
fmt.Println("Integer value:", n)
} else {
fmt.Println("Type assertion failed")
}
}
運行結果如下:
String value: hello
Type assertion failed
第一個類型斷言成功,因為 i
實際上是一個字符串赚抡。第二個類型斷言失敗,因為 i
不是一個整數(shù)涂臣。