golang遍历结构体

很多时候,我们可能会需要结构体赋值,又不想一个个字段的写,可以利用结构体遍历赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main
import (
"fmt"
"reflect"
)
type NotknownType struct {
s1, s2, s3 string
}
var secret interface{} = NotknownType{"Ada", "Go", "Oberon"}
func main() {
value := reflect.ValueOf(secret)
for i := 0; i < value.NumField(); i++ {
fmt.Printf("Field %d: %v, %s; \n", i, value.Field(i), value.FieldByName("s1"))
}
}