Go 类型断言
时间: 2023-09-06 15:07:37 浏览: 129
实例学习Golang–接口(二、空接口和类型断言)
在 Go 中,类型断言用于检查接口值的底层具体类型。它的语法如下:
```
value, ok := interfaceVar.(typeName)
```
其中,`interfaceVar` 是一个接口类型的变量,`typeName` 是一个具体的类型。如果 `interfaceVar` 底层的具体类型是 `typeName`,那么 `value` 将会是 `interfaceVar` 的值,`ok` 的值为 `true`。否则,`value` 的值为 `typeName` 的零值,`ok` 的值为 `false`。
例如:
```
var i interface{} = "hello"
s, ok := i.(string)
if ok {
fmt.Println(s)
} else {
fmt.Println("i is not a string")
}
```
在这个例子中,`i` 是一个空接口变量,其底层类型为 `string`。因此,类型断言 `i.(string)` 会成功,并将 `s` 赋值为 `"hello"`,`ok` 的值为 `true`。如果 `i` 的底层类型不是 `string`,那么 `ok` 的值会为 `false`,`s` 的值将会是 `""`。
阅读全文