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

如何将对象附加到切片?

如何将对象附加到切片?

Go
ABOUTYOU 2022-01-04 21:06:53
我是 golang 的新手,我想将查询结果聚合到一个results切片中以推送到浏览器。这是代码:type Category struct {    Id          bson.ObjectId `bson:"_id,omitempty"`    Name        string    Description string    Tasks       []Task}type Cats struct {    category Category} func CategoriesCtrl(w http.ResponseWriter, req *http.Request) {    session, err := mgo.Dial("localhost")    if err != nil {        panic(err)    }    defer session.Close()    session.SetMode(mgo.Monotonic, true)    c := session.DB("taskdb").C("categories")    iter := c.Find(nil).Iter()    result := Category{}    results := []Cats //Here is the problem    for iter.Next(&result) {        results = append(results, result)        fmt.Printf("Category:%s, Description:%s\n", result.Name, result.Description)        tasks := result.Tasks        for _, v := range tasks {            fmt.Printf("Task:%s Due:%v\n", v.Description, v.Due)        }    }    if err = iter.Close(); err != nil {        log.Fatal(err)    }    fmt.Fprint(w, results)    }但相反我得到type []Cats 不是表达式我怎样才能解决这个问题?
查看完整描述

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

你可以说

results := make([]Cats, 0)

或者

var results []Cats

或者

results := []Cats{}

反而。


查看完整回答
反对 回复 2022-01-04
?
jeck猫

TA贡献1909条经验 获得超7个赞

您可以results := make([]Cats, len)改用, wherelen是切片的初始长度。

results := []Cats{} 也会起作用。

如果你使用var results []Cats,它的初始值是nil你需要在使用之前初始化它append


查看完整回答
反对 回复 2022-01-04
  • 2 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信