doumen5895 2014-11-24 11:44
浏览 21
已采纳

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

_, 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;

If I write "TEST" in client, the server will not enter the case statement. But if I send "TEST SOMETHING" from client, the server will enter it as expected. Is this a bug of go-lang?

  • 写回答

1条回答 默认 最新

  • donglan6777 2014-11-24 13:56
    关注

    Print out your split buffer slice, it still contains the null bytes with which it was initialized:

    http://play.golang.org/p/CW45hPBZ-e

    buffer := make([]byte, 32)
    copy(buffer, []byte("TEST"))
    
    splited := strings.Split(string(buffer), " ")
    
    fmt.Printf("%#v
    ", splited)
    

    Prints: []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"}

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改