golang通过反射设置结构体字段的值

更新时间:2023-07-25 11:52:24 阅读: 评论:0

golang通过反射设置结构体字段的值
type Person struct {故宫太和殿
代表死亡的符号Name  string  `json:"name"`
Age      int `json:"age"`
}
func SetValueToStruct(name string,age int) *Person {
人的优点p := &Person{}
v := reflect.ValueOf(p).Elem()
v.FieldByName("Name").Set(reflect.ValueOf(name))大和银行
v.FieldByName("Age").Set(reflect.ValueOf(age))
return p
}
func main()  {
p := SetValueToStruct("张三",18)
fmt.Println(*p)
}
注:可能出现的错误
1.结构体⾸字母必须⼤写,否则会出现:panic: reflect: reflect.Value.Set using value obtained using unexported field
在Golang中⾸字母的⼤⼩写代表着访问权限,⾸字母⼩写则包外⽆法访问
思维定势的意思
2.  反射需要使⽤地址否则会出现:panic: reflect: reflect.Value.Set using unaddressable value东部华侨城
如下代码就会出现panic
p := Person{}
v := reflect.ValueOf(p)北京美食介绍
v.FieldByName("Name").Set(reflect.ValueOf(name))
v.FieldByName("Age").Set(reflect.ValueOf(age))
百侯薄饼

本文发布于:2023-07-25 11:52:24,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1096004.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:出现   反射   代表
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图