我正在尝试从stdin中读取两行未知数目的空格分隔的整数。我想将每行整数存储到自己的整数切片中。
例如,我的输入可能如下所示:
1 2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)
我想读成两个[]int:
[1,2,3]
[4,5,6]
Run Code Online (Sandbox Code Playgroud)
到目前为止,这就是我所拥有的。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()
}
}
Run Code Online (Sandbox Code Playgroud)
例如,
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)
}
Run Code Online (Sandbox Code Playgroud)
输出:
$ go run numbers.go
1 2 3
4 5 6
[1 2 3]
[4 5 6]
$
Run Code Online (Sandbox Code Playgroud)