Assign an array to struct fields in go

huangapple go评论87阅读模式
英文:

Assign an array to struct fields in go

问题

我有一个包含8个布尔字段的结构体,还有一个包含8个布尔值的数组。

如何将每个数组值分配给结构体中对应的字段?

我知道可以使用s.f = a[n]这样的方式,但如果字段更多呢?

英文:

I have a struct with 8 fields of bool, and an array with 8 boolean values.

How can I assign each array value to corresponding field in struct?

I knew I can use s.f = a[n], but what if there are more fields?

答案1

得分: 1

你可以使用reflect包来设置导出的字段:

var y = []bool{true, false, true}
var x struct{ X, Y, Z bool }
v := reflect.ValueOf(&x).Elem()
for i := 0; i < v.NumField(); i++ {
    v.Field(i).SetBool(y[i])
}
fmt.Println(x) // 输出 {true, false, true}
英文:

You may use the reflect package to set exported fields:

var y = []bool{true, false, true}
var x struct{ X, Y, Z bool }
v := reflect.ValueOf(&amp;x).Elem()
for i := 0; i &lt; v.NumField(); i++ {
	v.Field(i).SetBool(y[i])
}
fmt.Println(x) // prints {true, false, true}

huangapple
  • 本文由 发表于 2022年6月29日 04:06:09
  • 转载请务必保留本文链接:https://go.coder-hub.com/72792545.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定