Enviar pressionamentos de tecla stdin para o canal sem necessidade de nova linha

Gostaria de enviar os pressionamentos de tecla do usuário para um canal diretamente após cada pressionamento de tecla individual ser feito para stdin.

Eu tentei o código abaixo, mas isso não dá o resultado desejado porque oreader.ReadByte() blocos de método até que a nova linha seja inserida.

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
}

Obrigado por qualquer conselho sobre como posso fazer com que cada caractere de entrada do usuário vá imediatamente para o canal sem a necessidade de um caractere de nova linha.

questionAnswers(2)

yourAnswerToTheQuestion