在学习go编程,反射修改结构体属性的值时,示例
package main import( "fmt" "reflect" ) type People struct{ age int name string } func main(){ temp := People{age:20,name:"mark"} fmt.Println(temp.age) fmt.Println(temp.name) s := reflect.ValueOf(&temp).Elem() s.Field(0).SetInt(30) fmt.Println(s) fmt.Println(temp) }
发生了以下错误,

原因:
在struct中的属性,严格区分首字母大小写,大写为公有属性,外面可以访问到,小写为私有,外面访问不到。
即修改为
package main import( "fmt" "reflect" ) type People struct{ Age int Name string } func main(){ temp := People{Age:20,Name:"mark"} fmt.Println(temp.Age) fmt.Println(temp.Name) s := reflect.ValueOf(&temp).Elem() s.Field(0).SetInt(30) fmt.Println(s) fmt.Println(temp) }即可