Golang:使用Bash自动化两个OS.Stdin输入

问题描述 投票:0回答:1

我需要使类似波纹管的代码段的输入自动化,其中ReadString的输入是不同的。

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    buf := bufio.NewReader(os.Stdin)
    value, err := buf.ReadString('\n')
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(value)
    }

    buf = bufio.NewReader(os.Stdin)
    value, err = buf.ReadString('\n')
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(value)
    }
}

不幸的是,我尝试了以下类似this question的波纹管格式的几种格式,但没有一种有效。

>> echo "data1
data2" | go run main.go
output: data1

        EOF

这里data1data2以及单独的ReadString方法的输入。我无法控制源代码。因此,我只能尝试更改bash输入。如何解决此问题?

bash go
1个回答
0
投票

之所以这样,是因为第二个字符串没有以换行符结尾。查看ReadString的文档:

© www.soinside.com 2019 - 2024. All rights reserved.