1 回答

TA貢獻1821條經驗 獲得超6個贊
您可以使用 io.Pipe() ,它基本上創建了一個同步的內存管道,它可用于將期望 io.Reader 的代碼與期望 io.Writer 的代碼連接起來。例如,如果您有這樣的 json 內容:
{
"fruits": [
"apples",
"oranges",
"pears"
]
}
你可以嘗試這樣的事情:
package main
import (
"bytes"
"io"
"os"
"os/exec"
)
func main() {
c1 := exec.Command("cat", "/home/fruits.json")
c2 := exec.Command("jq", ".fruits[0:2]")
r, w := io.Pipe()
c1.Stdout = w
c2.Stdin = r
var b2 bytes.Buffer
c2.Stdout = &b2
c1.Start()
c2.Start()
c1.Wait()
w.Close()
c2.Wait()
io.Copy(os.Stdout, &b2)
}
它會給你這樣的東西:
[
"apples",
"oranges"
]
即使您可以像這樣通過管道傳輸多個命令,我還是強烈建議您使用標準庫中的json包到 Marshal 和 Unmarshal JSON。
- 1 回答
- 0 關注
- 150 瀏覽
添加回答
舉報