如何在Golang中检查数据是否为time.Time类型

4

在一个 if 条件中,我想知道我的数据类型是否为 time.Time

最佳方式是如何获取 res.Datas[i] 的数据类型并在 if 循环中进行检查?

1个回答

8
假设 res.Datas[i] 的类型不是具体类型而是接口类型(例如 interface{}),则可以使用类型断言来实现:
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 的指针被包装,你需要将它视为另一种类型进行检查。


非常感谢您提供这么清晰的解释!它确实有效 :) - Doby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接