前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言断言

Golang语言断言

作者头像
李海彬
发布2018-03-27 13:04:12
7620
发布2018-03-27 13:04:12
举报
文章被收录于专栏:Golang语言社区Golang语言社区
golang中的所有程序都实现了interface{}的接口,这意味着,所有的类型如string,int,int64甚至是自定义的struct类型都就此拥有了interface{}的接口,这种做法和java中的Object类型比较类似。那么在一个数据通过func funcName(interface{})的方式传进来的时候,也就意味着这个参数被自动的转为interface{}的类型。如果我们要返回这个interface{}变量,如下代码:
func funcName(a interface{}) string {

     return string(a)

}

就会报错:cannot convert a (type interface{}) to type string: need type assertion 不能直接将interface{}类型转为string,需要断言

func Test(a interface{}) string {

    value, ok := a.(string)

    if !ok {

        fmt.Println("It's not ok for type string",value)

        return

    }

    return value

}



func main(){

    a:="abcd"

    c1:=Test(a)

    b:=123

    c2:=Test(b)

    fmt.Println(c1,c2)

}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档