比如说你有这样的东西,试图让这个例子尽可能简单。type Home struct { Bedroom string Bathroom string}您如何将字段名称或您可以传递给函数?func (this *Home) AddRoomName(fieldname, value string) { this.fieldname = value}显然这是行不通的......我能看到的唯一方法是使用两个函数,当结构变得非常大并且有很多类似的代码时,这两个函数会增加很多额外的代码。func (this *Home) AddBedroomName(value string) { this.Bedroom = value}func (this *Home) AddBathroomName(value string) { this.Bathroom = value}
3 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
对接口值使用类型断言:
package main
import "fmt"
type Test struct {
S string
I int
}
func (t *Test) setField(name string, value interface{}) {
switch name {
case "S":
t.S = value.(string)
case "I":
t.I = value.(int)
}
}
func main() {
t := &Test{"Hello", 0}
fmt.Println(t.S, t.I)
t.setField("S", "Goodbye")
t.setField("I", 1)
fmt.Println(t.S, t.I)
}
- 3 回答
- 0 关注
- 147 浏览
添加回答
举报
0/150
提交
取消