- 北京 天气晴
- 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在我旁边看着我???我也莫得办法啊,我明明下班洗完澡就睡了,然后每天还是很困。就疯狂喝水,疯狂上厕所,掐手臂咬手指,强打精神敲代码。
今天食堂有西瓜啊。好了好了,中午好好休息,下午晚上一定不玩不睡了。
西瓜🍉.png
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"])
}
下午记录
在认真工作,今天好忙,明天补充。
第一次自己在源码里做开发,虽然做的是很简单的工作。上线的流程大致是,从master上拉最新的代码,然后开发,然后从master里开一个新分支,master pull同步一下。然后开发完的代码上传到新分支。mentor叫我写完压测一下,不过因为docker里gopath的原因没测上就下班了。
网友评论