社区
其他技术讨论专区
帖子详情
把结构pointer转成interface{}后怎么转回来
weixin_38066495
2019-09-20 10:45:30
```
package main
import (
"fmt"
)
type dog struct {
Name string
}
func recv(intf interface{}) {
//how to get the &d value ?
}
func main() {
var d = dog{ Name: "Bolter"}
fmt.Printf("intf: %p\n", &d)
recv(&d)
}
```
...全文
96
6
打赏
收藏
把结构pointer转成interface{}后怎么转回来
``` package main import ( "fmt" ) type dog struct { Name string } func recv(intf interface{}) { //how to get the &d value ? } func main() { var d = dog{ Name: "Bolter"} fmt.Printf("intf: %p\n", &d) recv(&d) } ```
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weixin_38090265
2019-09-20
打赏
举报
回复
可以用 func recv(intf interface{}) { //how to get the &d value ? dog := intf.(*dog) } 来获取,心诚则灵
weixin_38114312
2019-09-20
打赏
举报
回复
已经搞定了, 实际上recv是一个跟具体类型脱离的函数,不能引入具体的类型,比如dog, 因为还有可能是cat 有简单函数就能搞定: v:= reflect.ValueOf(intf).Pointer() //这个就是对象的指针 另外直接改成unsafe.Pointer也能搞定
???1111
2019-09-20
打赏
举报
回复
你这里很奇怪, 我一直都是这么使用的毫无问题, 你不就是要转成*dog, 然后操作dog的东西么。 为啥要牵扯到指针呢? 如果类型不明就算拿到了pointer指针你接下来怎么玩呢? 转化不了具体数据类型的指针就是一个数字而已。 你如果说这里可能是dog, 也可能是cat是要实现动态判断吗? 你可以用swith type这种经典的用法 switch intf.(type) { case *Dog: dog := intf.(*Dog) case *Cat: cat:= intf.(*Cat) default: doSomeDefaultThing() } 楼主是C或者C++转过来的吗?思路有点奇特。
weixin_38119848
2019-09-20
打赏
举报
回复
我没说你的写法有问题,转成具体类型是基本用法, 这个用不着问啊 recv和具体类型脱离, 进队列啊, 去重啊等等都不一定要转出来的
weixin_38069520
2019-09-20
打赏
举报
回复
断言
weixin_38082570
2019-09-20
打赏
举报
回复
intf.(dog) ?
golang reflect
Point
er
获取 传入的
int
er
face
信息
本文详细介绍了如何使用Go语言中的反射功能获取数据类型信息。包括使用reflect.TypeOf()获取类型及大小,通过Field(i)方法遍历
结构
体字段,并利用unsafe.
Point
er
结合uintptr计算偏移量。此外还展示了如何处理数组和切片类型的元素。
go
int
er
face
转
int_图解go反射实现原理
本文详细介绍了Go语言中反射的实现原理,涉及到
int
er
face
、unsafe.
Point
er
和反射对象之间的关系。通过回顾
int
er
face
的
结构
,阐述了反射的三大法则:从
int
er
face
到反射对象、从反射对象到
int
er
face
以及通过反射对象修改原数据。文中还探讨了如何通过反射修改原数据对象的值,并通过代码示例进行了说明。
19《Go语言入门》
int
er
face
和
int
er
face
{}、
int
er
face
和
point
er
本文深入探讨了Go语言中的空接口(
int
er
face
{}
int
er
face
能否用作map的key
本文探讨了Go语言中Map的键类型限制,包括
int
er
face
和
point
er
,并通过实例演示了它们如何进行比较。文章强调了理解这些类型的重要性和注意事项。
go
int
er
face
类型
转
换_图解Go的unsafe.
Point
er
本文深入探讨了Go语言中unsafe.
Point
er
的概念与应用规则,详细解释了其与C语言指针的区别,以及Go语言如何通过类型系统限制指针的使用。
其他技术讨论专区
479
社区成员
790,943
社区内容
发帖
与我相关
我的任务
其他技术讨论专区
其他技术讨论专区
复制链接
扫一扫
分享
社区描述
其他技术讨论专区
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章