O fmt
pacote de Go tem um requisito estrito de “espaço delimitado” ao ler a entrada. Para ler uma linha completa, você precisará usar um método como este:
package main
import (
"bufio"
"fmt"
"os"
)
// read *all* input up to the newline
func readln(r *bufio.Reader) (string, error) {
var (
isPrefix bool = true
err error = nil
line, ln []byte
)
for isPrefix && err == nil {
line, isPrefix, err = r.ReadLine()
ln = append(ln, line...)
}
return string(ln), err
}
func main() {
in := bufio.NewReader(os.Stdin)
var name string
fmt.Print("Enter your name: ")
name,_ = readln(in)
fmt.Printf("Welcome, %s.n", name)
}