解析的字符串有时会变为0

时间:2017-04-09 12:44:43

标签: go

在从字符串解析为整数时遇到问题,有时字符串被解析为0,尽管不是0。

示例:

我首先要做的是将字符串解析为三个不同的整数。我的代码如下:

package main
import (
    "bufio"
    "fmt"
    "os"
    "strconv"
    "strings"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    line, _ := reader.ReadString('\n')

    splitted := strings.Split(line, " ")

    N, _ := strconv.ParseInt(splitted[0], 0, 64) //Works as intended
    P, _ := strconv.ParseInt(splitted[1], 0, 64) //Works as intended
    Q, _ := strconv.ParseInt(splitted[2], 0, 64) //Does not work as intended

    fmt.Print(N, P, Q)  //For testing the parsing

}

如果输入字符串:“5 25 125”,输出会以某种方式变为: 5 25 0。

这就是问题所在,有时解析会将整数解析为字符串的内容。但有时它会将整数解析为零。

为什么会这样?

1 个答案:

答案 0 :(得分:3)

  

ReadString读取   直到输入中第一次出现delim,返回一个字符串   包含直至并包括分隔符的数据。

因此splitted[2]125\n,您应检查strconv.ParseInt(splitted[2], 0, 64)中的错误,而不是nil,以便返回的值为0.