gpt4 book ai didi

golang 从 stdin 扫描一行数字

转载 作者:IT王子 更新时间:2023-10-29 01:51:17 26 4
gpt4 key购买 nike

我正在尝试从 stdin 读取输入

3 2 1<ENTER>

并将其保存在一个整数列表中。目前我的代码如下所示:

nums = make([]int, 0)
var i int
for {
_, err := fmt.Scan(&i)
if err != nil {
if err==io.EOF { break }
log.Fatal(err)
}
nums = append(nums, i)
}

此时程序永远不会离开 for 循环。我找不到一种简单的方法来检查文档中的换行符。我该怎么做?

编辑:

因为我知道几乎肯定会有四个数字,所以我尝试了以下操作:

var i0,i1,i2,i3 int
fmt.Scanf("%d %d %d %d\n", &i0, &i1, &i2, &i3)

但这只扫描了第一个数字,然后退出了程序。我不确定这是不是因为我使用的 z-shell。

编辑:

为了澄清,该程序将暂停并要求用户输入由空格分隔并以换行符结尾的 n 个数字的列表。这些数字应该存储在一个数组中。

最佳答案

好吧,我决定拿出大bufio锤子,这样解决:

in := bufio.NewReader(os.Stdin)
line, err := in.ReadString('\n')
if err != nil {
log.Fatal(err)
}
strs := strings.Split(line[0:len(line)-1], " ")
nums := make([]int, len(strs))
for i, str := range strs {
if nums[i], err = strconv.Atoi(str); err != nil {
log.Fatal(err)
}
}

看起来确实有很多代码,但它确实有效。

关于golang 从 stdin 扫描一行数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33017547/

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