Динамическая структура на функции - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть проект для интеграции электронной коммерции, и у нас есть структура папок, подобная этой:

.
└── Sources
    ├── api
    │   └── ...
    └── websocket
        ├── models
        └── ...

Мой первый вопрос:

Эта папка models будет содержать некоторые файлы длялучше организуйте мои различные необходимые структуры (потому что они могут быть довольно длинными), и я действительно не хочу использовать в каталоге /go/src (потому что этот проект имеет API + WebSocket).

Так что это неправильноесли я импортирую как:

import (
    Models "./models"
)

и использую так: var someModel Models.SomeModel?

Мой второй вопрос:

Зная, что у меня будет много моделей,я могу создать уникальную функцию, чтобы сделать HTTP-запрос и проанализировать результат с заданной структурой?

Пример:

func makeRequest(endpoint string, model interface{}) interface{} {
    // TODO - Environment Variables
    resp, err := http.Get("http://localhost:9000" + endpoint)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    switch reflect.TypeOf(model).String() {
    case "models.FullCategory":
        fmt.Println("FullCategory")
        var fullCategory Models.FullCategory
        if err := json.Unmarshal(body, &fullCategory); err != nil {
            panic(err)
        }
        return fullCategory
    }
    return nil
}

Это может быть неправильно? Что я могу сделать, чтобы сделать это правильно?

...