如何通过反射获得字符串指针的变量名?

时间:2019-02-12 15:15:46

标签: pointers go reflection

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

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)
}

我尝试使用来获取s的值

val := reflect.ValueOf(s)

然后我不知道该怎么获得变量名。

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

感谢您的帮助。谢谢

1 个答案:

答案 0 :(得分:2)

您不能这样做。

编写# PARENT: class AddImages(LoginRequiredMixin, View): template_name = images/add_images.html # HERE I GET THE CURRENT URL: def next_url(self): next_url = "?next={0}".format(self.request.path) print("NEXT URL:" + str(next_url)) return next_url # AND I USE IT HERE: def post(self, request, **kwargs): # ... next_url = self.next_url() data = {'next_url' : next_url } return JsonResponse(data) # CHILD: class EditImages(AddImages): """ Inherits from ImagesView. overwrites template and next_url """ template_name = "images/edit_images.html" def next_url(self): next_url = "?next={0}".format(self.request.path) print("CHILD URL2:" + str(next_url)) return next_url 时,所拥有的只是一个指向字符串的指针。某些结构中的某些字段恰好具有此值的信息完全丢失/不可用。

在这里,我不建议不安全的软件包:您必须重新设计。