在if
条件下,我试图了解我的数据类型是否为time.Time
。
获取res.Datas[i]
数据类型并在if
循环中检查它的最佳方式是什么?
答案 0 :(得分:6)
假设res.Datas[i]
的类型不是具体类型而是接口类型(例如interface{}
),只需使用type assertion即可:
if t, ok := res.Datas[i].(time.Time); ok {
// it is of type time.Time
// t is of type time.Time, you can use it so
} else {
// not of type time.Time, or it is nil
}
如果您不需要time.Time
值,则只需要判断界面值是否包含time.Time
:
if _, ok := res.Datas[i].(time.Time); ok {
// it is of type time.Time
} else {
// not of type time.Time, or it is nil
}
另请注意,time.Time
和*time.Time
类型不同。如果包含指向time.Time
的指针,则需要将其作为其他类型进行检查。