2014-11-24 61 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

相關問題