登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: golang 断言与 C 语言中的强制类型转换     [回主站]     [分站链接]
golang 断言与 C 语言中的强制类型转换
clq
浏览(203) - 2018-12-31 15:18:09 发表 编辑

关键字: golang_bug

[2018-12-31 15:20:00 最后更新]
golang 断言与 C 语言中的强制类型转换

C 语言中的强制类型转换是在表达式前加类型,然后再加一个括号。 golang 中的强制转换则是将类型作为函数名使用,不过这种方法一经常无法转换 interface 这样的,而且也不安全。
所以在 golang 中有另外一个类型转换的方法叫断言,就是断言这个变量就是某个类型... 使用的方法倒也简单:按 C 语言的方式写好,然后将位置从变量名前面换到变量名后面就可以了...
等等,然后再在变量后再加个 "." 号,就好象它是变量的成员变量似的 ...

这种借用 C 语法加点变形的方法 golang 经常用,例如所谓切片(其实就是动态数组)的声明其实就是数组的声明,只是将数组长度去掉就是了,我是在那本很有名有 golang 书中看到的,原书
的说法是 "它看起来就象是没有长度的数组" 这一句话让我mao se 顿开 ...

另:用断言仍然会在失败时导致程序异常退出,所以在使用断言时还要加上判断。方法是在接收变量后加个 "," 号再加个 bool 变量就可以了。例如:

            p,ok := a.(*dns.PTR);
           
            if ok {
                fmt.Printf("%v, %v\n", p.Ptr, ok);
                result = append(result, p.Ptr);
            }





总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录
golang的坑 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1