golang 方法参数为interface 怎么引用?

studyseo · · 3638 次点击
就是封装mongodb 查询函数 第一个参数为 ``` type FindConstructor struct { Where bson.M } ``` 第二个参数 `interface` 这个用来接受查询数据的返回值 遇到的问题是 第二个内存地址换了导致 不会有数据返回 但是使用 json.Unmarshal 能达到要求 所有完整代码如下 ``` func Find(cstor FindConstructor, data interface{}) (findstatus FindStatusCode) { d2 := []interface{}{} table_name := getCollName(data) find, err := db.Coll(table_name).Find(db.TimeOut(), cstor.Where) if err != nil { findstatus = checkMongoErr(err) return } err = find.All(db.TimeOut(), &d2) if err != nil { findstatus = checkMongoErr(err) return } var errbson error var temporaryBytes []byte var json_list = [][]byte{} for _, v := range d2 { temporaryBytes, errbson = bson.MarshalExtJSON(v, true, true) if errbson != nil { continue } json_list = append(json_list, temporaryBytes) } j := bytes.Join(json_list, []byte(",")) j2 := "[" + string(j) + "]" err = json.Unmarshal([]byte(j2), &data) return } ```
#5
更多评论
```go package main import ( "encoding/json" "fmt" ) type s struct { } func main() { a2 := "12435" a(&a2) fmt.Println(a2) a1_str := map[string]string{ "a":"233", } a1_map := map[string]string{} a1(a1_str,&a1_map) fmt.Println("map 值",a1_map) } func a1( s map[string]string,smap interface{}) { mb, _ := json.Marshal(s) json.Unmarshal(mb,&smap) } func a(ap interface{}) { ap = 5 } ``` ```hash //运行结果 12435 map 值 map[a:233] ``` 忘解惑
#1
``` 12435 map 值 map[a:233] ```
#2