1 回答

TA貢獻1775條經驗 獲得超8個贊
如果解碼 JSON 沒有錯誤,此行將發生恐慌:
fmt.Printf("Received command: %v (Error: %s)\n", command, err.Error())
如果 err == nil,則 err.Error() 會因 nil 指針推導而發生恐慌。將該行更改為:
fmt.Printf("Received command: %v (Error: %v)\n", command, err)
如果您正在讀取套接字,則無法保證 s.Read() 將讀取完整的 JSON 值。編寫此函數的更好方法是:
func translateMessages(s socket) {
d := json.NewDecoder(s)
for {
fmt.Printf("Waiting for a message ... \n")
var command map[string]interface{}
err := d.Decode(&command)
fmt.Printf("Received command: %v (Error: %v)\n", command, err)
if err != nil {
return
}
}
}
如果您正在使用 websockets,那么您應該使用 gorilla/webscoket 包和ReadJSON來解碼 JSON 值。
- 1 回答
- 0 關注
- 273 瀏覽
添加回答
舉報