gpt4 book ai didi

input - 如何在 Go 中使用 strconv.Atoi() 方法?

转载 作者:IT王子 更新时间:2023-10-29 01:09:05 25 4
gpt4 key购买 nike

我正在尝试在这个小程序中获取用户输入。我已经尝试使用 strconv.Atoi() 方法以多种方式执行此操作(我的输入显然是一个字符串,我正在尝试将其转换为整数)。这是我的第一次尝试:

package main
import (
"fmt"
"strconv"
)

func main() {
//fmt.Println(strconv.Itoa)
fmt.Println("Say something, in numbers.")
var inputstr string
fmt.Scanln("%s", &inputstr)
input := strconv.Atoi(inputstr)
output := (input * 2)
outputstr := strconv.Itoa(output)
fmt.Println(outputstr)
}

编译时出现如下错误:

(line 19) multiple-value strconv.Atoi() in single-value context

然后我查看了 Godocs 并试图自己解决这个问题,然后意识到也返回了一个错误值。所以,我改变了

input := strconv.Atoi(inputstr)

input, _ := strconv.Atoi(inputstr)

现在编译正常了,没有任何错误。但是,当我运行该程序时,我得到的是:

Say something, in numbers.

0

然后它退出...我做错了什么?我相信这是关于 Atoi() 方法的问题,但如果它与 Scanln() 有关,请纠正我。

最佳答案

问题原来是Scanln。由于 %s,Scanln 返回错误 type not a pointer。然后将 inputstr 留空,当将其提供给 Atoi 时返回错误:strconv.ParseInt: parsing "": invalid syntax

按如下方式使用 Scanf,不更改 Atoi:

func main() {
//fmt.Println(strconv.Itoa)
fmt.Println("Say something, in numbers.")
var inputstr string

//fmt.Scanln("%s", &inputstr)
_, err := fmt.Scanf("%s", &inputstr)
if err != nil {
fmt.Println(err)
}
input, e := strconv.Atoi(inputstr)
if e != nil {
fmt.Println(e)
}
output := (input * 2)
outputstr := strconv.Itoa(output)
fmt.Println(outputstr)
}

可能最简单的解决方案是从 Scanln 中删除“%s”。

关于input - 如何在 Go 中使用 strconv.Atoi() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19531406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com