我正在尝试从 stdin 读取两行未知数量的空格分隔整数。我想将每一行 int 存储到它们自己的 int slice 中。
例如,我的输入可能是这样的:
1 2 3
4 5 6
我想把它读成两个 []int
:
[1,2,3]
[4,5,6]
这就是我目前所拥有的。 scanner.Scan()
给我一行,但我不确定如何将其转换为 []int
:
package main
import (
"fmt"
"os"
"bufio"
)
func main() {
var firstLine []int
var secondLine []int
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
t := scanner.Text()
}
}
最佳答案
例如,
numbers.go
:
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func numbers(s string) []int {
var n []int
for _, f := range strings.Fields(s) {
i, err := strconv.Atoi(f)
if err == nil {
n = append(n, i)
}
}
return n
}
func main() {
var firstLine, secondLine []int
scanner := bufio.NewScanner(os.Stdin)
for i := 1; i <= 2 && scanner.Scan(); i++ {
switch i {
case 1:
firstLine = numbers(scanner.Text())
case 2:
secondLine = numbers(scanner.Text())
}
}
fmt.Println(firstLine)
fmt.Println(secondLine)
}
输出:
$ go run numbers.go
1 2 3
4 5 6
[1 2 3]
[4 5 6]
$
关于go - 从 stdin 读取空格分隔的整数到 int slice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599253/