假設我只有一個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

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
您可以通過以下方式實現:
ptr := reflect.PointerTo(reflect.Typeof(lib.Counter{})) // *lib.Counter
變量t
可以是任意類型:
ptr := reflect.PointerTo(t)
- 2 回答
- 0 關注
- 241 瀏覽
添加回答
舉報
0/150
提交
取消