2014-11-24 63 views
-3
_, 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”,服务器将按预期输入。这是去朗的错误吗?为什么这段Golang代码不起作用?

+1

为什么有'break'在'case'的结尾? Go不需要它。 – 2014-11-24 11:54:23

+0

啊..只是习惯,也许很糟糕,明白了:) – 2014-11-24 12:50:29

回答

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

+0

谢谢,我在irc频道上得到同样的答案:) – 2014-11-24 14:16:46

相关问题