golang interface 和断言
golang 类型断言
类型断言是一个使用在接口值上的操作
有时候,我们可能需要知道某个接口类型的实际类型,比如某个方法需要接收多种类型的数据并需做分别处理时,我们可以把形参设为空接口类型以接收任意类型的值,但是我们怎么反向知道里面实际保存了的是哪个类型的对象呢?
一种常用的方法是:
• Comma-ok 断言
语法
value,ok := x.(T)
x表示一个接口的类型,T表示一个类型(也可为接口类型)
该断言表达式会返回x的值和一个布尔值 可根据该布尔值判断x是否为T类型
如:
func main() {
var x interface{}
x = 10
value, ok := x.(int)
fmt.Print(value, ",", ok)
}
1
2
3
4
5
6
输出
10,true
配合switch使用
func main() {
var a int
a = 10
judgeType(a)
}
func judgeType(a interface{}) {
switch a.(type) {
case int:
fmt.Println("the type of a is int")
case string:
fmt.Println("the type of a is string")
case float64:
fmt.Println("the type of a is float")
default:
fmt.Println("unknown type")
}
}
Tags : 本文未设置标签
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站大部分内容收集于互联网,如果有侵权内容、不妥之处,请联系删除。敬请谅解!
Previous post
nginx location 完全手册
Next post
swap交换空间爆满导致load average居高不下