为什么这段Golang代码不起作用?

时间:2014-11-24 11:44:50

标签: go

_, 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的错误吗?

1 个答案:

答案 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"}