Например, если создаем web-app в которой данные передаются в json формате, то:
Сначала нужно создать структуру
type JsonMessage struct {
Type string
Data json.RawMessage
}
Потом нужно создать под каждый запрос свою структуру
type ChatMessage struct {
Username string `json:"Username"`
Message string `json:"ConnectedTo"`
ChatId int `json:"ChatId"`
}
Потом нужно создать обработчик
var msg JsonMessage
err = json.Unmarshal(message, &msg)
if err != nil {
log.Println("Message decode failed")
return
}
switch msg.Type {
case "ChatMessage":
{
var cmsg ChatMessage
err = json.Unmarshal(msg.Data, &cmsg)
if err != nil {
log.Println("Chat message decode failed")
return
}
// ToDo ...
}
// ToDo ...
}
И в этом обработчике придется описать все возможные типы сообщений, в итоге код разрастается и становится трудным для понимания.
Посоветуйте что прочитать чтобы понять как правильно проектировать программу на Go, разбивать ее по файлам и модулям.