在Go語言中,類型斷言用于檢查接口值(interface value)是否包含一個特定的類型。類型斷言的語法如下:
value, ok := x.(T)
其中,x
是一個接口值,T
是要斷言的類型,value
是斷言成功后的變量,ok
是一個布爾值,表示斷言是否成功。
下面是一個簡單的示例,演示了如何使用類型斷言:
package main
import (
"fmt"
)
func main() {
var x interface{} = "hello, world!"
// 使用類型斷言檢查x是否為string類型
value, ok := x.(string)
if ok {
fmt.Println("x is a string:", value)
} else {
fmt.Println("x is not a string")
}
// 使用類型斷言檢查x是否為int類型
value, ok = x.(int)
if ok {
fmt.Println("x is an int:", value)
} else {
fmt.Println("x is not an int")
}
}
輸出結果:
x is a string: hello, world!
x is not an int
在這個示例中,我們首先定義了一個空接口類型的變量 x
,并將其賦值為字符串 “hello, world!”。然后,我們使用類型斷言分別檢查 x
是否為 string
類型和 int
類型。如果斷言成功,ok
的值為 true
,并且 value
包含斷言后的值。如果斷言失敗,ok
的值為 false
,并且 value
的值為該類型的零值。