管道的內容,位於os.Stdin裏,能夠像普通文件同樣操做os.Stdin,便可獲取管道傳過來的內容。golang
package main import ( "bufio" "fmt" "log" "os" ) func main() { fileInfo, _ := os.Stdin.Stat() if (fileInfo.Mode() & os.ModeNamedPipe) != os.ModeNamedPipe { log.Fatal("The command is intended to work with pipes.") } s := bufio.NewScanner(os.Stdin) for s.Scan() { fmt.Println(s.Text()) } }
經過os.Stdin的mode值來判斷程序是否經過管道調用。url
調用方法:cat test.txt |./pipe blog
參考url:http://blog.ralch.com/tutorial/golang-command-line-pipes/ip