我正在使用structs库来轻松地遍历结构的字段,例如:
package main
import "github.com/fatih/structs"
type T struct {
}
func main() {
s := structs.New(T{})
for _, field := range s.Fields() {
switch field.Kind() {
case bool:
// do something
case string:
// do something
}
}
}
当前,由于field.Kind是reflect.Type,上面的代码不起作用。有可能使其以某种方式工作吗?
谢谢。
答案 0 :(得分:1)
您将看到Kind()
方法返回一个reflect.Kind
,它是以下之一:
type Kind uint
const (
Invalid Kind = iota
Bool
Int
Int8
Int16
Int32
Int64
Uint
Uint8
Uint16
Uint32
Uint64
Uintptr
Float32
Float64
Complex64
Complex128
Array
Chan
Func
Interface
Map
Ptr
Slice
String
Struct
UnsafePointer
)
因此,您需要使案例类似于reflect.Bool
,而不是简单的bool
。
答案 1 :(得分:1)
使用预定义的反映种类常量:
for _, field := range s.Fields() {
switch field.Kind() {
case reflect.Bool:
// do something
case reflect.String:
// do something
}
}
}