Инициализировать структуру из func, которая возвращает кортеж - PullRequest
0 голосов
/ 24 декабря 2018

Хорошо, поэтому у меня есть это:

handler.Mount(subRouter, routes.PersonInjection{PeopleById: models.PersonInit()})

PersonInit выглядит следующим образом:

func PersonInit() (Map,Map) {

    peopleById["1"] = Model{ID: 1, Handle: "alex", Firstname: "Alex", Lastname: "Chaz", Email: "alex@example.com", Password:"foo"}
    peopleById["2"] = Model{ID: 2, Handle: "jason",Firstname: "Jason", Lastname: "Statham", Email: "jason@example.com", Password:"foo"}
    peopleByHandle["alex"] = peopleById["1"]
    peopleByHandle["jason"] = peopleById["2"]

    return peopleById, peopleByHandle
}

Тип карты просто Map[string]someStruct{}

и PersonInjection{} выглядиткак:

type PersonInjection struct {
    PeopleById, PeopleByHandle person.Map
}

поэтому я хочу сделать что-то вроде:

handler.Mount(subRouter, routes.PersonInjection{PeopleById,PersonByHandle: models.PersonInit()...})

ммм, кто-нибудь знает, как сделать что-то подобное?

сейчас у меня просто есть:

    by_id, by_handle := models.PersonInit()
    handler.Mount(subRouter, routes.PersonInjection{PeopleById: by_id, PeopleByHandle:by_handle})

1 Ответ

0 голосов
/ 24 декабря 2018

В Go нет конструкции, которая бы помогла сделать этот однострочный.Я думаю, что у вас сейчас все в порядке, за исключением подчеркивания в именах переменных .

Лично я бы добавил еще больше строк для удобства чтения:

var personInj routes.PersonInjection
personInj.PeopleById, personInj.PeopleByHandle = models.PersonInit()
handler.Mount(subRouter, personInj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...