У меня возникли проблемы с выяснением, как создать структуру в операторе switch или назначить ей тип в операторе switch.
Вот неработающий код, иллюстрирующий то, что я пытаюсь сделать:
var result
switch structPickingString {
case "struct1":
result = new(struct1)
case "struct2":
result = new(struct2)
}
//unmarshall some json into the appropriate struct type
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
log.Println(err)
}
//print out that json with a function specific to that type of struct
result.Print()
Я думаю что-то, связанное с пустым interface{}
, может быть связано с решением этой проблемы, но, к сожалению, я все еще немного не осведомлен о Голанге и не вижу, как заставить это работать.
Вот ссылка на слегка измененную версию кода для большего контекста: https://play.golang.org/p/Rb1oaMuvmU2
Проблема не в том, чтобы определить функцию печати, а в присвоении переменной типа result
определенной структуры на основе использования отдельной функции Print
, которую реализует структура.
Дайте мне знать, если я смогу предоставить больше информации.