繁体   English   中英

将动态数组结构传递给函数Golang

[英]Passing dynamic array struct to a function Golang

我想创建接受“动态数组结构”的函数,并使用它来映射数据库* mgodb中的数据

type Cats struct {
  Meow string 
}
func getCatsPagination() {
   mapStructResult("Animality","Cat_Col", Cats)
}

type Dogs struct {
  Bark string 
}
func getDogsPagination() {
   mapStructResult("Animality","Dog_Col", Dogs)
}

func mapStructResult(db string, collection string, model interface{}) {

   result := []model{} //gets an error here

   err := con.Find(param).Limit(int(limit)).Skip(int(offset)).All(&result) // map any database result to 'any' struct provided

   if err != nil {
      log.Fatal(err)
   }
}

并收到“模型不是类型”错误,为什么呢? 任何答案将不胜感激!

将准备好的切片传递给mapStructResult function

type Cats struct {
    Meow string
}

func getCatsPagination() {
    cats := []Cats{}
    mapStructResult("Animality", "Cat_Col", &cats)
}

type Dogs struct {
    Bark string
}

func getDogsPagination() {
    dogs := []Dogs{}
    mapStructResult("Animality", "Dog_Col", &dogs)
}

func mapStructResult(db string, collection string, model interface{}) {
    err := con.Find(param).Limit(int(limit)).Skip(int(offset)).All(result) // map any database result to 'any' struct provided
    if err != nil {
        log.Fatal(err)
    }
}

首先,没有一个术语叫做动态结构。 结构字段在使用前已声明,无法更改。 我们可以使用bson类型来处理数据。 Bson类型类似于用于动态保存数据的map[string]interface{}

func mapStructResult(db string, collection string, model interface{}) {

   var result []bson.M // bson.M works like map[string]interface{}

   err := con.Find(param).Limit(int(limit)).Skip(int(offset)).All(&result) // map any database result to 'any' struct provided

   if err != nil {
      log.Fatal(err)
   }
}

有关bson类型的更多信息。 将此Godoc查找为BSON

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM