我想基于golang中的空白从用户那里获取一些输入。
当前代码是...
fmt.Scanf("%d\n", &N)
var a [10]int
for n := 0; n < N; n++ {
fmt.Scanf("%d\n", &a[n])
}
这段代码可以让我在终端中输入内容,例如...
5
1
2
3
4
5
因此,a [] = {1,2,3,4,5}
但是我想在终端上输入...
5
1 2 3 4 5
因此,a [] = {1,2,3,4,5}
因此,请帮助查找上面的for循环中应更改的内容。
最佳答案
您可以尝试这样的事情。这将读取第一个数字,该数字是您要创建的数组的大小,然后下一行将是数组中长度为(n)的项
import (
"bufio"
"fmt"
"io"
"os"
"strconv"
"strings"
)
func main() {
reader := bufio.NewReaderSize(os.Stdin, 1024 * 1024)
nTemp, err := strconv.ParseInt(readLine(reader), 10, 64)
checkError(err)
n := int32(nTemp)
arrTemp := strings.Split(readLine(reader), " ")
var arr []int32
for i := 0; i < int(n); i++ {
arrItemTemp, err := strconv.ParseInt(arrTemp[i], 10, 64)
checkError(err)
arrItem := int32(arrItemTemp)
arr = append(arr, arrItem)
}
fmt.Printf("%#v, arr", arr)
}
所以当我尝试使用您给定的输入时,例如:
5
1 2 3 4 5
// I get the following:
[]int32{1, 2, 3, 4, 5}, arr
您提出的问题似乎在Hackerrank这样的网站上都是常见问题。
关于go - 如何在golang中使用空格距离进行输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61536798/