一尘不染

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

go

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

例如

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

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


阅读 535

收藏
2020-07-02

共1个答案

一尘不染

无论如何都会有一个循环,这里没有forand goto循环(在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)
}

使用:
更快的输入扫描

2020-07-02