Golang 通過方法名呼叫方法
阿新 • • 發佈:2018-11-28
有這樣一個結構體 Person,帶有4個方法。
現在有個需求,想通過方法的名字呼叫對應的方法,想到的辦法是將名字和對應方法建立 map 關係。
type Person struct {
nape string
age int
}
func (p *Person) SetName(nape string) { p.nape = nape }
func (p *Person) GetName() string { return p.nape }
func (p *Person) SetAge(age int) { p.age = age }
func ( p *Person) GetAge() int { return p.age }
func main() {
p := Person{
nape: "Test",
age: 1,
}
fmt.Println("Before", p)
methodMap := map[string]interface{}{
"SetName": p.SetName,
"GetName": p.GetName,
"SetAge": p.SetAge,
"GetAge" : p.GetAge,
}
for k, v := range methodMap {
switch k {
case "SetName":
v.(func(string))("Aland")
case "GetName":
fmt.Println(v.(func() string)())
case "SetAge":
v.(func(int))(18)
case "GetAge":
fmt.Println (v.(func() int)())
}
}
fmt.Println("After", p)
}