go - 从 stdin 读取空格分隔的整数到 int slice

标签 go

我正在尝试从 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/

相关文章:

Golang 递增数据到 Redis

list - 如何在golang中迭代相同列表时从列表中删除元素

REST API 只能通过我的 React 客户端访问

datetime - 如何检查某个日期在一段时间内的出现

go - 如何使用 Go Modules 打印我的项目中使用的许可证?

xml - 使用属性解码 xml 标签

go - 使用 Go 删除​​链接列表中的项目

performance - 如何测量golang中函数的执行时间,不包括等待时间

database - 查询Postgresql时偶尔会出现 "connection timed out"错误

go - 字符串迭代编程