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

我试图从返回的字符串转换flag.Arg(n)int。Go中惯用的方式是什么?


慕莱坞森
浏览 308回答 3
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 intif _, err := fmt.Sscan(s, &i); err == nil {    fmt.Printf("i=%d, type: %T\n", i, i)}输出(如果使用参数调用"123"):i=123, type: inti=123, type: int64i=123, type: int解析自定义字符串还有一个方便的工具fmt.Sscanf(),它为格式字符串提供了更大的灵活性,您可以在输入中指定数字格式(例如宽度,基数等)以及其他额外的字符string。这对于解析包含数字的自定义字符串非常有用。例如,如果"id:00123"以前缀形式提供输入,"id:"并且数字固定为5位数字,如果较短则用零填充,这很容易解析,如下所示:s := "id:00123"var i intif _, err := fmt.Sscanf(s, "id:%5d", &i); err == nil {    fmt.Println(i) // Outputs 123}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go