成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

golang -- mgo解析各種數(shù)據(jù)類型分析

xcold / 3179人閱讀

摘要:無法打開和都是,也就是說它們可以指向任意類型,此時是指向結(jié)構(gòu)的指針是具體此時是指針,指向的類型是會把當成對待所有域的信息都會輸出來此時是指向結(jié)構(gòu)的指針只有確定了類型后,才會當成具體類型只有確定了類型后,才會當成具體類型輸出結(jié)果如下

package main

import (
    "gopkg.in/mgo.v2"
    "log"
    "reflect"
)

func main() {
    session, err := mgo.Dial("usr:[email protected]:27017/dbname")
    if err != nil {
        log.Fatal("無法打開MongoDB!")
        return
    }
    defer session.Close()

    clt := session.DB("mydb").C("userinfo")
    type row struct {
        UserName, 
        Telephone string
    }

    var _row, _row2 interface{}
    // _row和_row2 都是interface,也就是說它們可以指向任意類型,此時是指向row結(jié)構(gòu)的指針
    _row = new(row)
    _row2 = new(row)
    // _row3 是具體struct
    _row3 := row{}
    
    log.Printf("type of &row: %v
", reflect.TypeOf(&_row))
    log.Printf("type of row:  %v
", reflect.TypeOf(_row2))
    log.Printf("type of &row3: %v
", reflect.TypeOf(&_row3))

    it := clt.Find(nil).Limit(1).Iter()
    log.Println("test unmarshal using", reflect.TypeOf(&_row))
    for it.Next(&_row) {
        // 此時&_row是指針,指向的類型是interface 
        // mongo會把row當成map對待, 所有域的信息都會輸出來
        log.Println(_row)
    }
    
    it = clt.Find(nil).Limit(1).Iter()
    log.Println("test unmarshal using", reflect.TypeOf(_row2))
    for it.Next(_row2) {
        // 此時row2是指向row結(jié)構(gòu)的指針
        // 只有確定了類型后,才會當成具體類型
        log.Println(_row2)
    }

    it = clt.Find(nil).Limit(1).Iter()
    log.Println("test unmarshal using", reflect.TypeOf(&_row3))
    for it.Next(&_row3) {
        // 只有確定了類型后,才會當成具體類型
        log.Println(_row3)
    }
}

輸出結(jié)果如下:

2016/04/28 16:23:22 type of &row: *interface {}
2016/04/28 16:23:22 type of row:  *main.row
2016/04/28 16:23:22 type of &row3: *main.row
2016/04/28 16:23:22 test unmarshal using *interface {}
2016/04/28 16:23:22 map[_id:ObjectIdHex("5721c757a8917850b210f0ca") username:xiaoming telephone:2222 address:beijing]
2016/04/28 16:23:22 test unmarshal using *main.row
2016/04/28 16:23:22 &{xiaoming  2222}
2016/04/28 16:23:22 test unmarshal using *main.row
2016/04/28 16:23:22 {xiaoming  2222}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/18839.html

相關(guān)文章

  • golang基礎(chǔ)學習-MongoDB使用

    摘要:如果刪除所有用替換其他寫了一個和結(jié)合的數(shù)據(jù)查詢服務(wù)細節(jié)可點擊鏈接到查看 1.系統(tǒng)環(huán)境 Golang:go version go1.10.3 darwin/amd64 OS:MacOS MongoDB: version: 3.4.4 2.Golang使用MongoDB 使用:gopkg.in/mgo.v2 獲取包:go get gopkg.in/mgo.v2 引入:impor...

    LinkedME2016 評論0 收藏0
  • Golang mgo驅(qū)動指定Mongo服務(wù)器讀取

    摘要:搭建服務(wù)器采用搭建,可參考讀模式的讀模式共有五種在主節(jié)點上進行所有的讀操作優(yōu)先在主節(jié)點上進行讀操作,如果主節(jié)點不可用,再從從節(jié)點操作。 Replica Sets搭建 服務(wù)器采用Replica Sets搭建,可參考Deploy a Replica Set 讀模式 Mongod的讀模式共有五種: primary. 在主節(jié)點上進行所有的讀操作 primaryPreferred. 優(yōu)...

    rollback 評論0 收藏0
  • 用Go語言借助mgo實現(xiàn)一個對MongoDB進行增刪改查的demo

    摘要:準備數(shù)據(jù)結(jié)構(gòu)這個以對一個簡單的通訊錄進行插入查詢更新刪除記錄為例,中包含和兩個字段下載還沒出官方的驅(qū)動包,是現(xiàn)在比較流行的第三方包,能找到的相關(guān)資料也比較多。準備實現(xiàn)對的增刪改查操作,先想了下怎么寫測試案例。查找,通過查找該條記錄。 環(huán)境聲明:go version go1.11MongoDB server version 4.0.3 背景 這是我第一次接觸golang和MongoDB,...

    Jingbin_ 評論0 收藏0
  • Golang 微服務(wù)教程(三)

    摘要:本節(jié)將學習來統(tǒng)一管理和部署微服務(wù),引入第三個微服務(wù)并進行存儲數(shù)據(jù)。到目前為止,要想啟動微服務(wù)的容器,均在其中的同時設(shè)置其環(huán)境變量,服務(wù)多了以后管理起來十分麻煩。 譯文鏈接:wuYin/blog原文鏈接:ewanvalentine.io,翻譯已獲作者 Ewan Valentine 授權(quán)。 本文完整代碼:GitHub 在上節(jié)中,我們使用 go-micro 重新實現(xiàn)了微服務(wù)并進行了 Doc...

    Drummor 評論0 收藏0
  • 利用mongo的findAndModify原子性操作實現(xiàn)auto increment ID

    摘要:實際情況默認情況下,使用自動生成,而且在自帶的命令里,無法指定一個自增字段。自增字段在多線程時必須是原子性的,這在大數(shù)據(jù)情況下很難實現(xiàn)伸縮性。而且,在里面,有一個命令是原子性的。代碼如下無法打開創(chuàng)建個模擬多線程環(huán)境輸出查詢結(jié)果 實際情況 默認情況下,mongo使用_id自動生成uniq id,而且在mongo自帶的命令里,無法指定一個自增字段。自增字段在多線程時必須是原子性的,這在大數(shù)...

    genedna 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<