类型断言(Type Assertion)是一个使用在接口值上的操作,用于检查接口类型变量所持有的值是否实现了期望的接口或者具体的类型。
在Go语言中类型断言的语法格式如下:
value, ok := x.(T)
其中,x 表示一个接口的类型,T 表示一个具体的类型(也可为接口类型)。
该断言表达式会返回 x 的值(也就是 value)和一个布尔值(也就是 ok),可根据该布尔值判断 x 是否为 T 类型:
示例代码如下:
package main import ( "fmt" ) func main() { var x interface{} x = 10 value, ok := x.(int) fmt.Print(value, ",", ok) }
运行结果如下:
10,true
需要注意如果不接收第二个参数也就是上面代码中的 ok,断言失败时会直接造成一个 panic。如果 x 为 nil 同样也会 panic。
示例代码如下:
package main import ( "fmt" ) func main() { var x interface{} x = "Hello" value := x.(int) fmt.Println(value) }
运行结果如下:
panic: interface conversion: interface {} is string, not int
类型断言还可以配合 switch 使用,示例代码如下:
package main import ( "fmt" ) func main() { var a int a = 10 getType(a) } func getType(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") } }
运行结果如下:
the type of a is int
文章名称:创新互联GO教程:Go语言类型断言简述
分享链接:http://www.shufengxianlan.com/qtweb/news26/377126.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联