为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 reflect.Type 对 switch 进行断言

如何使用 reflect.Type 对 switch 进行断言

Go
慕盖茨4494581 2023-05-22 16:09:07
我正在使用结构库轻松迭代结构的字段,例如:package mainimport "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。有可能让它以某种方式工作吗?谢谢。
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

您会看到该Kind()方法返回 a 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

)

所以你需要的案例是 likereflect.Bool而不是简单的bool.


查看完整回答
反对 回复 2023-05-22
?
繁星coding

TA贡献1797条经验 获得超4个赞

使用预定义的反射类型常量:


for _, field := range s.Fields() {

    switch field.Kind() {

    case reflect.Bool:

      // do something

    case reflect.String:

      // do something

    }

  }

}


查看完整回答
反对 回复 2023-05-22
  • 2 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信