首页 > 解决方案 > 如何使用反射获取字符串指针的变量名?

问题描述

我想通过使用反射来获取字段名称的名称。我将字符串作为指针传递,然后我想在函数中检索变量名。

type FooBar struct {
    foo *string
}

func bar(s *string) {

    var name string

    // TODO: Get name of the field that s is pointing to!

    fmt.Println("Expected string is foo: " + name)
}

func main() {
    f := Foo{"bar"}
    bar(f.s)
}

我试着用

val := reflect.ValueOf(s)

然后我无法获得变量名。

我应该提到我的结构中有多个字段,我事先不知道哪个字段有问题。

任何帮助表示赞赏。谢谢

标签: pointersgoreflection

解决方案


你不能做这个。

当您编写时,f.s您所拥有的只是一个指向字符串的指针。某些结构中的某些字段恰好将其作为值的信息完全丢失/不可用。

我不会在这里推荐 package unsafe:你必须重新设计。


推荐阅读