无法对允许向服务器发送文本消息的客​​户端进行编程

So I've programmed a server that receives text messages from a connecting client, reverses and capses them and sends them back.

Now I'm trying to program a client so that when I launch it it will keep running until I shut it down (ctrl + c) and allow me to input text lines and send them to the server.

I have a problem though - if I pass a, say, cyrillic symbol to the input, it will return a <nil> <nil> (type, value) error and will remain bugged unless I flush the memory somehow.

I also can't figure how to read the whole message (whole meaning the size of the slice (1024 bytes)) instead of each word separately.

Also, how do I figure out how to delay my 'enter your message' text? Depending on the length of the message I pass on to the server, it should wait longer or shorter. I don't want it popping all over the place if the message is split into a few messages, just once after the answer is received.

Here's the relevant code:

func client() {
    // connect to the server
    c, err := net.Dial("tcp", "127.0.0.1"+":"+port)
    if err != nil {
        log.Printf("Dial error: %T %+v", err, err)
        return
    }

    // send the message
    msg := ""
    for {
    fmt.Print("Enter your message:
")
    _, errs := fmt.Scan(&msg)
    if errs != nil {
        log.Printf("Scan error: %T %+v", errs, errs)
        return
    }
    fmt.Println("Client sending:
", msg)
    _, errw := c.Write([]byte(msg))
    if errw != nil {
        log.Printf("Write error: %T %+v", errw, errw)
        return
    }
    // handle the response
    go handleServerResponse(c)
    time.Sleep(1 * time.Second)
}

func main() {
    port = "9999"

    // launch client
    done := make(chan bool)
    go client()
    <-done // Block forever
}

I've used the empty channel to block the main() from ending.

How should I approach the 2 problems explained above?

Question answered by @JimB:

You're using fmt.Scan which scans space separated values. Don't use that if you don't want to read each value separately. You can use Scanln to read a line, or just read directly from stdin.