Go中的strconv.Atoi(基本计算器)

时间:2017-11-04 03:13:49

标签: go calculator strconv

我正在尝试在Go中创建一个基本的添加计算器(这里是完整的noob),但每次我得到0的输出。

这是代码:

package main

import (
    "fmt"
    "strconv"
    //"flag"
    "bufio"
    "os"
)

func main(){
     reader := bufio.NewReader(os.Stdin)
     fmt.Print("What's the first number you want to add?: ")
     firstnumber, _ := reader.ReadString('\n')
     fmt.Print("What's the second number you want to add?: ")
     secondnumber, _ := reader.ReadString('\n')
     ifirstnumber, _ := strconv.Atoi(firstnumber)
     isecondnumber, _ := strconv.Atoi(secondnumber)
     total := ifirstnumber + isecondnumber
     fmt.Println(total)

}

1 个答案:

答案 0 :(得分:4)

bufio.Reader.ReadString()返回数据直到包括分隔符。所以你的字符串实际上最终是"172312\n"strconv.Atoi()不喜欢这样,并返回0.它实际上会返回错误,但您会使用_忽略它。

您可以看到this example会发生什么:

package main

import (
    "fmt"
    "strconv"
)

func main(){
     ifirstnumber, err := strconv.Atoi("1337\n")
     isecondnumber, _ := strconv.Atoi("1337")
     fmt.Println(err)
     fmt.Println(ifirstnumber, isecondnumber)
}

您可以使用strings.Trim(number, "\n")修剪换行符。