interface 怎么类型转换

nashasha · 2014-11-18 11:10:55 · 11337 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2014-11-18 11:10:55 的主题,其中的信息可能已经有所发展或是发生改变。

我在使用Printf 的%T进行输出的时候,发现变量v的类型是string,但是我定义一个string类型的变量A,然后使用 A = v的时候,会报错:cannot convert v (type interface {}) to type string: need type assertion 这个怎么处理。怎么把interface的类型转成 string呢? 谢谢各位大神。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

11337 次点击  
加入收藏 微博
3 回复  |  直到 2019-01-10 14:02:25
polaris
polaris · #1 · 10年之前

A.(string) 类型断言

qkb_75_go
qkb_75_go · #2 · 10年之前

只能 是 interface 类型来兼容自定义结构等强类型, 不能反过来,强类型来 兼容interface 类型! GO可是非常强类型的语言。

XinhongWu
XinhongWu · #3 · 6年之前

学习了,正好今天遇到类似的问题。 interface类型 . (需要转换的类型), 注意中间的点号,在进行类型转换前,最好先进行类型的判别: func checkType(v1, v2 interface{}) error { if reflect.TypeOf(v1) != reflect.TypeOf(v2) { return errors.New("Types not ok") }

return nil

} 这样会安全一些。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传