使用反射获取指针所指向的类型。

huangapple go评论80阅读模式
英文:

Getting the type pointed to a pointer with reflection

问题

给定以下代码:

var v reflect.Value = ...

v.Type() // *model.Company

如何使用反射实例化一个新的model.Company对象,并修改其字段?

英文:

Given this :

var v reflect.Value = ...

v.Type() // *model.Company

How to instantiate a new model.Company and modify its fields with reflection ?

答案1

得分: 0

以下是您提供的代码的翻译:

类似于以下代码:

v := reflect.ValueOf(&Company{})
t := v.Type()
c := reflect.New(t.Elem()).Elem()
c.FieldByName("Name").SetString("Reflection Inc.")
fmt.Printf("%#v\n", c.Interface())
// => main.Company{Name:"Reflection Inc."}

在playground上的可运行版本:

英文:

Something along the lines of:

v := reflect.ValueOf(&Company{})
t := v.Type()
c := reflect.New(t.Elem()).Elem()
c.FieldByName("Name").SetString("Reflection Inc.")
fmt.Printf("%#v\n", c.Interface())
// => main.Company{Name:"Reflection Inc."}

Working version in the playground:

huangapple
  • 本文由 发表于 2013年9月2日 23:52:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/18576937.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定