strconv.Atoi 在 Go 中(基本计算器)
strconv.Atoi in Go (Basic calculator)
我正在尝试用 Go 制作一个基本的加法计算器(这里完全是菜鸟),但每次我得到的输出都是 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)
}
bufio.Reader.ReadString()
returns 直到并包括分隔符的数据。所以你的字符串实际上最终是 "172312\n"
。 strconv.Atoi()
不喜欢,returns 0。它实际上是 returns 一个错误,但你用 _
忽略了它。
你可以看到 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)
}
您可以 trim 使用 strings.Trim(number, "\n")
换行。
我正在尝试用 Go 制作一个基本的加法计算器(这里完全是菜鸟),但每次我得到的输出都是 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)
}
bufio.Reader.ReadString()
returns 直到并包括分隔符的数据。所以你的字符串实际上最终是 "172312\n"
。 strconv.Atoi()
不喜欢,returns 0。它实际上是 returns 一个错误,但你用 _
忽略了它。
你可以看到 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)
}
您可以 trim 使用 strings.Trim(number, "\n")
换行。