Input 在Go中,使用递归从一行扫描数字

Input 在Go中,使用递归从一行扫描数字,input,go,stdin,Input,Go,Stdin,我想把stdin中的一行整数扫描成一片整数。每个整数用空格分隔。用户输入的整数将多达N个。我尽量不使用for循环。比如说, package main import "fmt" var a []int func read(b int) { if b == 0 { return } var i int _, err := fmt.Scanf("%d", &i) if err != nil { return

我想把stdin中的一行整数扫描成一片整数。每个整数用空格分隔。用户输入的整数将多达N个。我尽量不使用for循环。比如说,

package main

import "fmt"

var a []int

func read(b int) {
    if b == 0 {
        return
    }
    var i int
    _, err := fmt.Scanf("%d", &i)
    if err != nil {
        return
    }
    a = append(a, i)
    read(b - 1)
}

func main() {
    read(4)
    fmt.Println(a)
}
115617

到目前为止,这是我执行任务的职责

var array []int

func read(b int) {
    if b == 0 {
        return
    }
    fmt.Scanf("%d", &array)
    read(b - 1)
}
其思想是从输入中读取1151617,并将其制成一个具有值[1151617]的切片

编译后,我得到了错误

Runtime error
比如说,

package main

import "fmt"

var a []int

func read(b int) {
    if b == 0 {
        return
    }
    var i int
    _, err := fmt.Scanf("%d", &i)
    if err != nil {
        return
    }
    a = append(a, i)
    read(b - 1)
}

func main() {
    read(4)
    fmt.Println(a)
}
输入:

1 15 16 17<Enter>

不是递归的,而是只读取整数,直到stdin关闭或无法转换为整数的内容被读取为止

package main

import "fmt"

func main() {
    var array []int
    var i int
    for {
        _, err := fmt.Scan(&i)
        if err != nil {
            break
        }
        array = append(array, i)
        fmt.Println("read number", i, "from stdin, array ", array)
    }
}
问题是“使用递归”和“我尽量不使用for循环”,你使用了for循环。你没有回答这个问题。