失败的类型断言,返回的值为最近断言类型的零值
代码入下:
func main() { var data interface{} = "ehoo" if res, ok := data.(int); ok { fmt.Printf("int res:%d\n", res) } else if res, ok := data.(bool); ok { fmt.Printf("bool res:%b\n", res) } else { fmt.Printf("other res:%v\n", res) // 断言类型的零值,结果:false } }
补充:go语言interface{}类型断言的举例使用
在go语言里经常会用到interface{}类型,它是类似于c语言中的void *类型,可以接受任意类型的参数。当我们的函数或者方法中有该参数时,要判断具体的类型值再进行相应处理。
一般格式:返回值,bool变量:=interface{}变量.(要判断的具体类型),这样就是以某个具体类型来断言,返回值就是这个具体类型的。
比如:v,b:=a.(string),这个就是假设a这个interface{}变量是string类型,而v这个返回值就是string类型的变量,至于是否假设成功,就看b是true或者false。
这样,如要判断多个类型的话,就要分别写多个语句,v,b:=a.(string),v1,b1:=a.(int),v2,b2:=a.(float64)...因为每次的返回值v,v1,v2是不同的预言类型数值,有点麻烦。
而用switch .(type) case这样语句,就省事多了,格式为:返回值:=interface{}变量.(type) case 具体某一类型: case 具体某一类型: ......
type Student struct { m_Addr string m_ID int } func (stu *Student) SetAddr(addr interface{}) (bool, error) { //这样写法:返回值,bool变量:=interface{}变量.(要判断的具体类型),就是判断是否为指定类型的值。 v, b := addr.(string) //这样就是断言v是string类型的变量,只能赋值给同类型的数值。 if b { //如是上边要判断的string类型,这里会返回true stu.m_Addr = v return true, nil } else { //如不是判断的string类型,会返回false,下面会返回错误信息 return false, fmt.Errorf("不是string类型") } } func (stu *Student) SetStu(data ...interface{}) (bool, error) { for _, d := range data { //循环遍历参数列表,忽略第一个参数索引 /*这种写法是一个一个类型判断,在判断多个类型时,比较麻烦,使用下面switch case就简便多了 var v, b = d.(string) if b { stu.m_Addr = v } var v1, b1 = d.(int) if b1 { stu.m_ID = v1 } */ switch v := d.(type) { //传递type类型,只能在switch case语句使用,返回的v就是具体的值。 case int: //在每一个case判断具体类型,并对返回值v进行处理 stu.m_ID = v case string: stu.m_Addr = v } } return true, nil }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
golang,类型断言,返回值
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】
- 伊能静.1999-从脆弱到勇敢1987-1996精选2CD【华纳】【WAV+CUE】
- 刘亮鹭《汽车DJ玩主》[WAV+CUE][1.1G]
- 张杰《最接近天堂的地方》天娱传媒[WAV+CUE][1.1G]
- 群星《2022年度发烧天碟》无损黑胶碟 2CD[WAV+CUE][1.4G]
- 罗文1983-罗文甄妮-射雕英雄传(纯银AMCD)[WAV+CUE]
- 群星《亚洲故事香港纯弦》雨果UPMAGCD2024[低速原抓WAV+CUE]
- 群星《经典咏流传》限量1:1母盘直刻[低速原抓WAV+CUE]
- 庾澄庆1993《老实情歌》福茂唱片[WAV+CUE][1G]
- 许巍《在别处》美卡首版[WAV+CUE][1G]
- 林子祥《单手拍掌》华纳香港版[WAV+CUE][1G]
- 郑秀文.1997-我们的主题曲【华纳】【WAV+CUE】
- 群星.2001-生命因爱动听电影原创音乐AVCD【MEDIA】【WAV+CUE】