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

在Go中将字符串转换为整数类型?

在Go中将字符串转换为整数类型?

Go
慕莱坞森 2021-04-09 14:15:58
我试图从返回的字符串转换flag.Arg(n)成int。Go中惯用的方式是什么?
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

转换简单字符串

最简单的方法是使用该strconv.Atoi()功能。


请注意,还有许多其他方法。例如fmt.Sscan(),strconv.ParseInt()由于您可以指定基数和位大小,因此可以提供更大的灵活性。也如以下文档中所述strconv.Atoi():


Atoi等效于ParseInt(s,10,0),转换为int类型。


这是使用上述功能的示例(在Go Playground上尝试):


flag.Parse()

s := flag.Arg(0)


if i, err := strconv.Atoi(s); err == nil {

    fmt.Printf("i=%d, type: %T\n", i, i)

}


if i, err := strconv.ParseInt(s, 10, 64); err == nil {

    fmt.Printf("i=%d, type: %T\n", i, i)

}


var i int

if _, err := fmt.Sscan(s, &i); err == nil {

    fmt.Printf("i=%d, type: %T\n", i, i)

}

输出(如果使用参数调用"123"):


i=123, type: int

i=123, type: int64

i=123, type: int

解析自定义字符串

还有一个方便的工具fmt.Sscanf(),它为格式字符串提供了更大的灵活性,您可以在输入中指定数字格式(例如宽度,基数等)以及其他额外的字符string。


这对于解析包含数字的自定义字符串非常有用。例如,如果"id:00123"以前缀形式提供输入,"id:"并且数字固定为5位数字,如果较短则用零填充,这很容易解析,如下所示:


s := "id:00123"


var i int

if _, err := fmt.Sscanf(s, "id:%5d", &i); err == nil {

    fmt.Println(i) // Outputs 123

}


查看完整回答
反对 回复 2021-04-26
  • 3 回答
  • 0 关注
  • 306 浏览
慕课专栏
更多

添加回答

举报

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