登录
首页 >  Golang >  Go问答

将接口转换为 int64 无法按预期工作

来源:stackoverflow

时间:2024-04-18 10:54:35 280浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《将接口转换为 int64 无法按预期工作》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我正在尝试编写一种将纪元时间戳转换为 int64 值的方法,但该方法可能会获取多种数据类型;例如int64intstring。我有以下代码:

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)

}

我希望它能够成功地将 ttstr 变量转换为 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.131.141.15。全部都有相同的输出。


解决方案


go 没有所请求的功能。编写如下代码:

func test(t interface{}) (int64, error) {
    switch t := t.(type) {   // This is a type switch.
    case int64:
        return t, nil        // All done if we got an int64.
    case int:
        return int64(t), nil // This uses a conversion from int to int64
    case string:
        return strconv.ParseInt(t, 10, 64)
    default:
        return 0, fmt.Errorf("type %T not supported", t)
    }
}

Run this code on the GoLango Playgroundo

今天关于《将接口转换为 int64 无法按预期工作》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>