Je suis tout nouveau sur Go (c'est-à-dire depuis moins d'un jour) et je m'amuse avec un programme simple qui traite les données de stdin. Je voulais faire en sorte que si aucune donnée n'est fournie à stdin, le programme affiche un écran d'aide et se termine. Le problème que j'ai rencontré est que le programme semble se bloquer indéfiniment lorsqu'aucune donnée n'est fournie par stdin. Voici un court exemple du programme et de l'utilisation que je souhaite en faire :
package main
import (
"fmt"
"bufio"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanLines)
for scanner.Scan() {
str := scanner.Text()
fmt.Println(str)
}
}
Running with input:
go run test.go < lines.txt
line1
line2
line3
Running with no input:
go run test.go
Le deuxième cas où je ne fournis pas d'entrée est ce qui provoque le blocage du programme. En lisant la documentation, je ne vois pas comment je pourrais coder le programme pour qu'il n'attende pas indéfiniment une entrée, mais qu'il s'arrête si rien n'est présent sur stdin.