为了账号安全,请及时绑定邮箱和手机立即绑定

将切片中的值分组为新类型

将切片中的值分组为新类型

Go
守候你守候我 2022-08-24 10:30:15
我在根据位置将 user1 和 user2 分组到新类型时遇到问题type Chat struct {location stringuserName string}a := Chat{location:Cal, userName:"user1"}b := Chat{location:Cal, userName:"user2"}c := Chat{location:IL, userName:"user3"}type result struct {location stringchat []Chat}
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

假设您只想按位置字符串分组并从中创建结果结构,则可以使用地图:


type Chat struct {

    location string

    userName string

}


type Result struct {

    location string

    chat     []Chat

}


func main() {

    a := Chat{location: "Cal", userName: "user1"}

    b := Chat{location: "Cal", userName: "user2"}

    c := Chat{location: "IL", userName: "user3"}


    x := []Chat{a, b, c}

    m := make(map[string]Result)

    for _, c := range x {

        if val, ok := m[c.location]; ok {

            chats := append(val.chat, c)

            m[c.location] = Result{location: c.location, chat: chats}

        } else {

            m[c.location] = Result{location: c.location, chat: []Chat{c}}


        }

    }


    for k, v := range m {

        fmt.Printf("%s -> %v\n", k, v)

    }

}

那会回来的


Cal -> {Cal [{Cal user1} {Cal user2}]}

IL -> {IL [{IL user3}]}



查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号