读取Golang中以空格分隔的一组整数

时间:2016-09-19 03:47:09

标签: go

我想从stdin中读取一组整数值并将其放入整数切片中。如果不使用for循环,最快的方法是什么。

e.g。

Enter the number of integers
3
Enter the integers
23 45 66

如何将这些值放在整数切片中?

2 个答案:

答案 0 :(得分:3)

无论如何都有一个循环,这里没有forgoto循环(在The Go Playground上尝试):

package main

import "fmt"

func main() {
    fmt.Println(`Enter the number of integers`)
    var n int
    if m, err := Scan(&n); m != 1 {
        panic(err)
    }
    fmt.Println(`Enter the integers`)
    all := make([]int, n)
    ReadN(all, 0, n)
    fmt.Println(all)
}

func ReadN(all []int, i, n int) {
    if n == 0 {
        return
    }
    if m, err := Scan(&all[i]); m != 1 {
        panic(err)
    }
    ReadN(all, i+1, n-1)
}

func Scan(a *int) (int, error) {
    return fmt.Scan(a)
}

IO:

Enter the number of integers
3
Enter the integers
10 20 30
[10 20 30]

更快的输入扫描重写:

func Scan(a *int) (int, error) {
    return fmt.Scan(a)
}
使用


 Faster input scanning

答案 1 :(得分:2)

使用循环的简单解决方案,无需使用递归函数:

    var n int

    if _, err := fmt.Scan(&n); err != nil {
        panic(err)
    }

    arr := make([]int, n)

    for i := 0;i<n;i++{

        if _, err := fmt.Scan(&arr[i]); err != nil {
            panic(err)
        }
    }

    fmt.Println(arr)