GO 类型断言
时间: 2023-09-06 11:07:37 浏览: 40
在 Go 语言中,类型断言(type assertion)用于将接口类型的值转换为指定的类型。类型断言语法格式如下:
```
value.(type)
```
其中,value 是一个接口类型的值,type 是要转换的目标类型。如果转换成功,则返回转换后的值和一个 true 值;如果转换失败,则返回一个对应类型的零值和一个 false 值。
例如,假设有一个接口类型的值 i,我们想将其转换为字符串类型的值,代码如下:
```
s, ok := i.(string)
if ok {
fmt.Println("转换成功:", s)
} else {
fmt.Println("转换失败")
}
```
在上面的代码中,变量 s 将保存转换后的字符串值,变量 ok 表示转换是否成功。如果转换成功,则打印转换结果;否则打印转换失败。
相关问题
golang类型断言
在 Golang 中,类型断言用于检查接口值的底层具体类型。类型断言的语法如下:
```
value, ok := interfaceVar.(typeName)
```
其中,`interfaceVar` 为接口类型的变量,`typeName` 为底层具体类型的名称。如果 `interfaceVar` 的底层类型是 `typeName`,则断言成功,返回 `value` 和 `true`;否则返回 `value` 的零值和 `false`。在类型断言中,通常使用 `if` 语句进行判断,例如:
```
if str, ok := var1.(string); ok {
// var1 的底层类型是 string
fmt.Println(str)
} else {
// var1 不是 string 类型
fmt.Println("var1 is not a string")
}
```
如果 `var1` 的底层类型是 string,则输出 `var1` 的值;否则输出错误信息。
Go 类型断言
在 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` 的值将会是 `""`。