【发布时间】:2020-12-02 01:04:17
【问题描述】:
我正在尝试编写一个将纪元时间戳转换为int64 值的方法,但是该方法可能会获取多种数据类型;例如int64、int、string。我有以下代码:
package main
import (
"fmt"
)
func test(t interface{}) {
tInt64, ok := t.(int64)
fmt.Println("initial value:", t)
fmt.Printf("initial type: %T\n", t)
fmt.Println("casting status:", ok)
fmt.Println("converted:", tInt64)
}
func main() {
t := 1606800000
tStr := "1606800000"
test(t)
test(tStr)
}
我希望它能够成功地将t 和tStr 变量转换为int64;但是,结果如下:
initial value: 1606800000
initial type: int
casting status: false
converted: 0
initial value: 1606800000
initial type: string
casting status: false
converted: 0
我不知道这是否相关;但我使用三个版本的 golang 编译器执行代码:1.13、1.14 和 1.15。都有相同的输出。
【问题讨论】: