Te pongo un exemplo pequeño. Como ves la clave es bufio.NewReader
(os.Stdin):
package main
import (
"bufio";
"fmt";
"os";
)
func main() {
fmt.Printf("Ejemplo de captura de teclado...\n");
for {
fmt.Printf("Escribe algo: ");
in := bufio.NewReader(os.Stdin);
lineBuf, err := in.ReadString('\n');
if err != nil {
fmt.Fprintln(os.Stderr, "Error en ReadLine: ", err);
os.Exit(2);
}
line := string(lineBuf);
if line == "fin\n" {
os.Exit(0);
}
fmt.Printf("Has escrito: %s", line);