为了账号安全,请及时绑定邮箱和手机立即绑定

获取 reflect.Type 的指针类型

获取 reflect.Type 的指针类型

Go
MMMHUHU 2023-01-03 14:19:33
假设我只有一个reflect.Type t:fmt.Println(t) //prints lib.Counter我想获得指向这种类型的指针类型,这样:fmt.Println(ptrT) //prints *lib.Counter我怎样才能做到这一点?t可以是任何类型,不仅是 lib.Counter。另外,如果我想反之亦然怎么办?就像从 *lib.Counter 获取 lib.Counter 一样?
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您可以使用reflect.PointerTo

要再次获取非指针类型,您可以使用Type.Elem()

thing := Thing{}

ptrThing := &Thing{}


thingType := reflect.TypeOf(thing)

fmt.Println(thingType) // main.Thing

thingTypeAsPtr := reflect.PointerTo(thingType)

fmt.Println(thingTypeAsPtr) // *main.Thing


ptrThingType := reflect.TypeOf(ptrThing)

fmt.Println(ptrThingType) // *main.Thing

ptrThingTypeAsNonPtr := ptrThingType.Elem()

fmt.Println(ptrThingTypeAsNonPtr) // main.Thing

工作示例:https ://go.dev/play/p/29eXtdgI9Xf


查看完整回答
反对 回复 2023-01-03
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以通过以下方式实现:

ptr := reflect.PointerTo(reflect.Typeof(lib.Counter{})) // *lib.Counter

变量t可以是任意类型:

ptr := reflect.PointerTo(t)


查看完整回答
反对 回复 2023-01-03
  • 2 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信