- 北京 天氣晴
- leader上次說CSDN沒逼格蚌父??毛萌???苟弛,滾來簡書寫學習記錄了。雜七雜八的日常放在日記本阁将,有時間寫些專題膏秫。堅持寫作,好好學習做盅。
Go的json解析
go語言本身提供encoding/json包
json.Marshal 將數據轉成json
imap := map[string]string{"username":"vicky", "phone":"9527"}
value, err := json.Marshal(imap)
if err != nil {
fmt.Println("json轉換失敗缤削。")
}
//轉換之后是[]byte類型
fmt.Println(string(value))
{"phone":"9527","username":"vicky"}
在實際項目中,編碼成json串的數據結構吹榴,往往是切片類型亭敢。這個下午或者明天讀源碼的時候再記。
json.Unmarshal解析json
var imapGet map[string]string
//1. 第一個參數是json byte[]類型的字符串腊尚,第二個參數是接收數據的數據結構
//2. 第二個參數是個指針類型
errShal := json.Unmarshal(valueGet, &imapGet)
if errShal != nil {
fmt.Println(err)
}
午間小記
就莫名其妙一上班就很困吨拗,從10點困到吃飯的那種,mentor在我旁邊看著我婿斥??哨鸭?我也莫得辦法啊民宿,我明明下班洗完澡就睡了,然后每天還是很困像鸡。就瘋狂喝水活鹰,瘋狂上廁所,掐手臂咬手指只估,強打精神敲代碼志群。
今天食堂有西瓜啊。好了好了蛔钙,中午好好休息锌云,下午晚上一定不玩不睡了。
redigo的基本使用
連接redis和set/get基本操作
/**
* @Author: xiewenxin@songguo7.com
* @Date: 2019-07-23 10:03
* @File: LinkRedis.go
**/
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
"time"
)
func main() {
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("Connect to redis error", err)
return
}
defer c.Close()
//set, 定時1s
_, err = c.Do("SET", "mykey", "superCX", "EX", "1")
if err != nil {
fmt.Println("redis set failed:", err)
}
//get
username, err := redis.String(c.Do("GET", "mykey"))
if err != nil {
fmt.Println("redis get failed:", err)
} else {
fmt.Printf("Get mykey : %v \n", username)
}
//延時1s
time.Sleep(1 * time.Second)
//mykey沒啦
username, err = redis.String(c.Do("GET", "mykey"))
if err != nil {
fmt.Println("redis get failed:", err)
} else {
fmt.Printf("Get mykey: %v \n", username)
}
//exists
_, err = c.Do("SET", "my_name", "vicky")
is_key_exit, err := redis.Bool(c.Do("EXISTS", "my_name"))
if err != nil {
fmt.Println("error:", err)
} else {
fmt.Printf("exists or not : %v \n", is_key_exit)
}
//刪除
_, err = c.Do("DEL", "my_name")
if err != nil {
fmt.Println("redis delete failed:", err)
} else {
fmt.Println("my_name delete successfully")
}
}
讀寫json
/**
* @Author: xiewenxin@songguo7.com
* @Date: 2019-07-23 11:12
* @File: ReadJson.go
**/
package main
import (
"encoding/json"
"fmt"
"github.com/garyburd/redigo/redis"
)
func main() {
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("Connect to redis error", err)
return
}
defer c.Close()
key := "profile"
imap := map[string]string{"username":"vicky", "phone":"9527"}
//map轉成json
value, _ := json.Marshal(imap)
//寫入redis吁脱。NX是Not exists的縮寫桑涎。set if not exist.
n, err := c.Do("SETNX", key, value)
if err != nil {
fmt.Println(err)
}
if n == int64(1) {
fmt.Println("success")
}
//從redis中讀
valueGet, err := redis.Bytes(c.Do("GET", key))
if err != nil {
fmt.Println(err)
}
//把json解析為map
var imapGet map[string]string
errShal := json.Unmarshal(valueGet, &imapGet)
if errShal != nil {
fmt.Println(err)
}
fmt.Println(imapGet["username"])
fmt.Println(imapGet["phone"])
}
下午記錄
在認真工作彬向,今天好忙,明天補充攻冷。
第一次自己在源碼里做開發(fā)娃胆,雖然做的是很簡單的工作。上線的流程大致是等曼,從master上拉最新的代碼里烦,然后開發(fā),然后從master里開一個新分支禁谦,master pull同步一下胁黑。然后開發(fā)完的代碼上傳到新分支。mentor叫我寫完壓測一下枷畏,不過因為docker里gopath的原因沒測上就下班了别厘。