登录
首页 >  Golang >  Go问答

使用函数返回的元组初始化结构

来源:stackoverflow

时间:2024-03-23 12:00:38 496浏览 收藏

本文探讨了一种使用函数返回的元组初始化结构体的方法。该函数返回两个映射,它们被用作结构体的字段。作者希望简化初始化过程,以便直接将元组传递给结构体,而不是先将元组解包到单独的变量中。

问题内容

好的,我有这个:

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: "[email protected]", password:"foo"}
    peoplebyid["2"] = model{id: 2, handle: "jason",firstname: "jason", lastname: "statham", email: "[email protected]", password:"foo"}
    peoplebyhandle["alex"] = peoplebyid["1"]
    peoplebyhandle["jason"] = peoplebyid["2"]

    return peoplebyid, peoplebyhandle
}

map 类型只是 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})

解决方案


go 中没有任何结构可以帮助制作这一行。我想,除了underscores in the variable names之外,你现在的都还可以。

就我个人而言,为了可读性,我会添加更多行:

var personInj routes.PersonInjection
personInj.PeopleById, personInj.PeopleByHandle = models.PersonInit()
handler.Mount(subRouter, personInj)

以上就是《使用函数返回的元组初始化结构》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>