golang使用 mongo

 鏈接集羣golang

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
因此集羣的話格式是

 GlobalMgoSession, err := mgo.Dial("mongodb://username:pwd@host1:port,host2:port")mongodb

若是不須要auth,則能夠是  app

 GlobalMgoSession, err := mgo.Dial("host1:port,host2:port")函數

 

生成objectid工具

i := bson.NewObjectId()
c.Insert(bson.M{"_id": i, "foo": "bar"})

 

golang 使用 mongo gte lte 功能spa


不能直接寫 searchErr = SearchReading(bson.M{"k": key, "t": bson.M{"$gte": start, "$lte": end}}, limit)
searchErr = SearchReading(bson.M{"k": key, "t":'{"$gte": start, "$lte": end}'}, limit)

 

基礎小工具code

go語言的int轉換成string有3種方法orm

一、int32位,strconv.Itoa
二、大於32位,strconv.FormatInt(int,進制(10))
三、萬惡的fmt.Sprintf.對象

 golang md5 計算內存

func genQueryMd5(str string) string {

hash := md5.New()

b := []byte(str)

hash.Write(b)

hash.Sum(nil)

return fmt.Sprintf("%x", md5.Sum(b))

}

  1. When you call Sum(nil) it returns d.checkSum() directly as a byte slice, however if you call Sum([]byte) it appends d.checkSum() to your input.  
  2. Write函數會把MD5對象內部的字符串clear掉,而後把其參數做爲新的內部字符串。而Sum函數則是先計算出內部字符串的MD5值,然後把輸入參數附加到內部字符串後面。便可覺得認爲:hash.Write(b) + hash.Sum(nil) = hash.Write(nil) + hash.Sum(b) + hash.Sum(nil) = md5.Sum(b)。

解析字符串爲 int64
func ParseInt(s string, base int, bitSize int) (i int64, err error)

參數1 數字的字符串形式

參數2 數字字符串的進制 好比二進制 八進制 十進制 十六進制

參數3 返回結果的bit大小 也就是int8 int16 int32 int64

import 

(
    "strconv"
)
i, err := strconv.ParseInt("123", 10, 32)


時間戳互換
獲取時間戳用time.Now().Unix(),格式化時間用t.Format,解析時間用time.Parse
timestamp := time.Now().Unix()
//格式化爲字符串,tm爲Time類型

tm := time.Unix(timestamp, 0)

fmt.Println(tm.Format("2006-01-02 03:04:05"))
//從字符串轉爲時間戳,第一個參數是格式,第二個是要轉換的時間字符串

tm2, _ := time.Parse("01/02/2006", "02/08/2015")

golang byte 轉string

golang裏邊 string的概念其實不是之前遇到/0結尾的概念了,他其實就是一塊連續的內存,首地址+長度,上面那樣賦值,若是p裏邊有/0,他不會作處理這個時候,若是再對這個string作其餘處理就可能出問題了,好比strconv.Atoi轉成int就有錯誤,解決辦法就是須要本身寫一個正規的轉換函數:

func byteString(p []byte) string {       

for i := 0; i < len(p); i++ {               

   if p[i] == 0 {                       

      return string(p[0:i])               

  }       

}       

return string(p)

}

 

golang  Polymorphism的支持。interface對多態的支持仍是比較有限。down casting作不了有的時候仍是不大方便。用父類作方法參數,傳遞子類則會編譯失敗,沒法作通用類

相關文章
相關標籤/搜索