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

将 strconv.ParseInt 与整数一起使用的惯用方式

将 strconv.ParseInt 与整数一起使用的惯用方式

Go
蝴蝶不菲 2021-06-16 09:29:34
我最终编写了这样的代码。我需要一个常规的 int(用于其他一些函数调用),但 parseInt 只产生 64 位整数:i64, err := strconv.ParseInt(s, 10, 0)if err != nil {    fmt.Println("parsing failed for", s)}i := int(i64)http://play.golang.org/p/_efRm7yp3o有没有办法避免额外的演员?或者有什么方法可以让这更地道?
查看完整描述

2 回答

?
POPMUISE

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

您可以以您想要的方式使用strconv.Atoiwhich 包装strconv.ParseInt


查看完整回答
反对 回复 2021-06-21
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

使用bitSize parameter的strconv.ParseInt


package main


import (

        "fmt"

        "strconv"

)


// 32 or 64 depending on platform

const IntBits = 1 << (^uint(0)>>32&1 + ^uint(0)>>16&1 + ^uint(0)>>8&1 + 3)


func printInt(i int) {

        fmt.Println(i)

}


func main() {

        s := "-123123112323231231"

        i64, err := strconv.ParseInt(s, 10, IntBits)

        if err != nil {

                fmt.Println("parsing failed for ", s)

        }

        i := int(i64)

        printInt(i)


        i64, err = strconv.ParseInt(s, 10, 32)

        if err != nil {

                fmt.Println("parsing failed for ", s)

        }

        i = int(i64)

        printInt(i)

}

输出


-123123112323231231

parsing failed for  -123123112323231231

-2147483648


查看完整回答
反对 回复 2021-06-21
  • 2 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

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