Avatar ·

Como ler a entrada do teclado (entrada padrão) no console em Go?

Acabei de começar a estudar Go e me deparei com um problema simples, mas importante. Preciso escrever um programa que solicite ao usuário o nome e a idade e, em seguida, exiba uma saudação. Mas não consigo entender como ler corretamente uma string ou número do console.\n\nEm outras linguagens (por exemplo, Python), eu simplesmente usava `input()`, e em C++, `cin`. Em Go, vejo muitas maneiras: `bufio`, `fmt.Scan`, `os.Stdin`, e isso me confunde. Tentei a opção mais óbvia:\n\n```go\npackage main\n\nimport "fmt"\n\nfunc main() {\n var name string\n fmt.Print("Digite o nome: ")\n fmt.Scan(&name)\n fmt.Println("Olá,", name)\n}\n```\n\nMas quando digito "João Silva", o programa imprime apenas "Olá, João", e a segunda palavra é perdida. Também não entendo como ler um número e tratar erros se o usuário digitar letras em vez de dígitos. Por favor, me diga como ler dados da entrada padrão em Go de forma correta e confiável? Preciso de exemplos para strings (com espaços) e para números.