如何将对象附加到切片?

我是 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 不是表达式


我怎样才能解决这个问题?


ABOUTYOU
浏览 109回答 2
2回答

互换的青春

你可以说results := make([]Cats, 0)或者var results []Cats或者results := []Cats{}反而。

jeck猫

您可以results := make([]Cats, len)改用, wherelen是切片的初始长度。results := []Cats{} 也会起作用。如果你使用var results []Cats,它的初始值是nil你需要在使用之前初始化它append。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go