_, error := connection.Read(buffer)
buffer := make([]byte, BUFFER_SIZE)
splited := strings.Split(string(buffer), " ")
switch splited[0] {
case "TEST":
connection.Write([]byte("TEST CONNECTION OK"))
log.Printf("TEST COMMAND")
break;
如果我在客户端写“TEST”,服务器将不会输入case语句。但是如果我从客户端发送“TEST SOMETHING”,服务器将按预期输入。这是go-lang的错误吗?
答案 0 :(得分:1)
打印出你的分割缓冲区片,它仍然包含初始化它的空字节:
http://play.golang.org/p/CW45hPBZ-e
buffer := make([]byte, 32)
copy(buffer, []byte("TEST"))
splited := strings.Split(string(buffer), " ")
fmt.Printf("%#v\n", splited)
打印:
[]string{"TEST\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}