[Go] golang x.(type) 用法

golang x.(type) 用法


类型断言和类型判断 if 和 type-switch两种形式

使用类型断言断定某个接口是否是指定的类型

 

if这种简化形式:

if _,ok:=x.(T);ok{

 

}

 

type-switch 类型判断形式

类型断言使得相同接口的变量在不同的时刻表现出不同的行为,这就是多态的本质。

复制代码
func MyPrintf(args ...interface{}) {  
    for _, arg := range args {  
        switch arg.(type) {  
            case int:  
                fmt.Println(arg, "is an int value.")  
            case string:  
                fmt.Println(arg, "is a string value.")  
            case int64:  
                fmt.Println(arg, "is an int64 value.")  
            default:  
                fmt.Println(arg, "is an unknown type.")  
        }  
    }  
}
复制代码

 

 

在go-imap中看到使用

复制代码
        switch h := p.Header.(type) {
        case *mail.InlineHeader:
            // This is the message's text (can be plain-text or HTML)
            b, _ := ioutil.ReadAll(p.Body)
            log.Println("Got text: ", string(b))
        case *mail.AttachmentHeader:
            // This is an attachment
            filename, _ := h.Filename()
            log.Println("Got attachment: ", filename)
        }
复制代码

 

 

posted @   唯一客服系统开发笔记  阅读(3628)  评论(2编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
历史上的今天:
2019-05-14 [Linux] ssh秘钥对免密码登陆
2016-05-14 [android] 手机卫士黑名单功能(ListView结合SQLite增删改)
2016-05-14 [PHP] 重回基础(IO流)
点击右上角即可分享
微信分享提示
1
chat with us