Enviar pulsaciones estándar al canal sin necesidad de nueva línea

Me gustaría enviar las pulsaciones de las teclas del usuario a un canal directamente después de cada pulsación individual realizada de manera estándar.

He intentado el código a continuación, pero esto no da el resultado deseado porque elreader.ReadByte() Bloques de método hasta que se ingrese una nueva línea.

func chars() <-chan byte {
    ch := make(chan byte)
    reader := bufio.NewReader(os.Stdin)
    go func() {
        for {           
            char, err := reader.ReadByte()
            if err != nil {
                log.Fatal(err)
            }
            ch <- char
        }
    }()
    return ch
}

Gracias por cualquier consejo sobre cómo puedo hacer que cada carácter de entrada del usuario vaya inmediatamente al canal sin la necesidad de un carácter de nueva línea.

Respuestas a la pregunta(2)

Su respuesta a la pregunta