登录
首页 >  Golang >  Go问答

当存在指向整数作为动态类型的指针时,获取接口的动态值

来源:stackoverflow

时间:2024-02-20 09:27:55 426浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《当存在指向整数作为动态类型的指针时,获取接口的动态值》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我正在努力弄清楚如何从保存动态类型为整数指针的值的接口中“提取”整数值。

您可以按照这个准备运行的示例来充分了解问题所在和我的意图。

TD;DR:

出于某种原因,在动态类型为指向整数的指针的接口上首次调用 reflect.ValueOf(value) 时的反射,当我再次提取时,它返回一个 Kind() 结果为 reflect.Ptr 的值使用 reflect.ValueOf(value).Elem() 的“内部”值我得到另一个值,其 Kind() 结果为 reflect.Struct。我什至不编写任何结构,但它们以自己的“神奇”方式出现。所以 golang 可能不会惊慌,但我不明白发生了什么,可能我缺少一些信息。我将非常感谢任何向我解释发生了什么事的人。

这可能适用于这种情况,但它并不能启发我。我希望指针“后面”有一个整数值。我不需要访问修改,我只需要获取它。


正确答案


它是结构体,因为当您在函数内调用 tocompliantvalue 时,您没有向其传递值本身,而是传递 reflect.value 值,并且 reflect.value 是一个结构体。您必须直接处理它,而不是尝试使用递归:

v := reflect.ValueOf(value)
fmt.Printf("Value is %+v\n", v)
if v.Kind() == reflect.Ptr {
    v = v.Elem()
}
switch v.Kind() {
    // ...

工作示例:https://play.golang.org/p/ndRjXJfj5xV

以上就是《当存在指向整数作为动态类型的指针时,获取接口的动态值》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>