Reading from stdin using os.Stdin should work as expected:
package main
import "os"
import "log"
import "io"
func main() {
bytes, err := io.ReadAll(os.Stdin)
log.Println(err, string(bytes))
}
Executing echo test stdin | go run stdin.go should print ‘test stdin’ just fine.
It would help if you’d attach the code you used to identify the problem you encountered.
For line based reading you can use bufio.Scanner:
import "os"
import "log"
import "bufio"
func main() {
s := bufio.NewScanner(os.Stdin)
for s.Scan() {
log.Println("line", s.Text())
}
}