大家好,我是你的好朋友思创斯。今天说一说golang reflect elem_reflect用法及搭配,希望您对编程的造诣更进一步.
package main
import (
“fmt”
“reflect”
)
type person struct {
name string
age int
}
func (p person) getname() string {
return p.name
}
func (p person) setname(s string) {
p.name = s
}
func main() {
a := &person{“name”, 1}
t := reflect.typeof(*a) //必须取值,否则类型为空
fmt.println(t.name())
v := reflect.valueof(a).elem() //a需要是引用
k := v.type()
for i := 0; i < v.numfield(); i {
key := k.field(i)
val := v.field(i)
fmt.println(key.name, val.type(), val.interface())
}
for i := 0; i < v.nummethod(); i {
key := k.method(i)
val := v.method(i)
fmt.println(key.name, val.type(), val.interface())
}
v.fieldbyname(“name”).set(reflect.valueof(“name”))
fmt.println(a.name)
name := v.methodbyname(“getname”).call([]reflect.value{})
fmt.println(name)
}
文章由思创斯整理,转载请注明出处:https://ispacesoft.com/118723.html