猿问

您可以将结构字段名传递给 golang 中的函数吗?

比如说你有这样的东西,试图让这个例子尽可能简单。


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

}


Qyouu
浏览 148回答 3
3回答

侃侃尔雅

对接口值使用类型断言:package mainimport "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)}
随时随地看视频慕课网APP

相关分类

Go
我要回答