<>强补充:去语言界面{}类型断言的举例使用
在去语言里经常会用{}到接口类型,它是类似于c语言中的void *类型,可以接受任意类型的参数。当我们的函数或者方法中有该参数时,要判断具体的类型值再进行相应处理。
一般格式:返回值,bool变量:{}=界面变量。(要判断的具体类型),这样就是以某个具体类型来断言,返回值就是这个具体类型的。
比如:v, b:=一个。(字符串),这个就是假设这一个接口{}变量是字符串类型,而v这个返回值就是字符串类型的变量,至于是否假设成功,就看b是真实或者错误的。
这样,如要判断多个类型的话,就要分别写多个语句,v, b:=一个。(字符串),v1, b1:=一个。(int), v2, b2:=(float64)…因为每次的返回值v, v1、v2是不同的预言类型数值,有点麻烦。
而用开关。(类型)这样语句,就省事多了,格式为:返回值:{}=界面变量。(类型)具体某一类型:例具体某一类型:……
type Student struct { m_Addr 字符串 m_ID int } , func (stu *学生),SetAddr (addr 接口{}),(bool,错误),{ ,//这样写法:返回值,bool变量:{}=界面变量。(要判断的具体类型),就是判断是否为指定类型的值。 ,v, b :=, addr。(字符串),//这样就是断言v是字符串类型的变量,只能赋值给同类型的数的值。 ,if b {,,,//如是上边要判断的弦类型,这里会返回现实 stu.m_Addr v=, ,return 的确,nil {}大敌;else //如不是判断的弦类型,会返回假,下面会返回错误信息 ,return 假,fmt.Errorf(“不是字符串类型“) ,} } func (stu *学生),SetStu (data ……接口{}),(bool,错误),{ ,for _, d :=, range data {,//循环遍历参数列表,忽略第一个参数索引 ,/*这种写法是一个一个类型判断,在判断多个类型时,比较麻烦,使用下面switch 案例就简便多了 ,var v, b =d。(字符串) ,if b { stu.m_Addr v=, ,} ,var v1, b1 =d。(int) ,if b1 { stu.m_ID =, v1 ,} ,*/,switch v :=, d。(类型),{,//传递类型类型,只能在switch 案例语句使用,返回的v就是具体的值。 ,case int://在每一个案件判断具体类型,并对返回v值进行处理 stu.m_ID v=, ,case 字符串: stu.m_Addr v=, ,} ,} ,return 的确,nil }
关于golang中失败的类型断言返回什么值就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。