Contents

go标准库-Encoding

go语言中文网

godoc

go语言中文网有很多文档缺少内容比如string.Builder就没有,godoc绝对详尽,推荐阅读godoc

hex

常用函数

  • func DecodedLen(x int) int:长度x的编码数据解码后的明文数据的长度
  • func Decode(dst, src []byte) (int, error):解码
  • func EncodedLen(n int) int:长度x的明文数据编码后的编码数据的长度
  • func Encode(dst, src []byte) int:编码
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
package main

import (
	"encoding/hex"
	"fmt"
)

func main() {
	a := []byte("sadafzxczsd")
	b := make([]byte, hex.EncodedLen(len(a)))
	hex.Encode(b, a)
	fmt.Println(string(b))
	c := make([]byte, hex.DecodedLen(len(b)))
	hex.Decode(c, b)
	fmt.Println(string(c))
}

  • func EncodeToString(src []byte) string:将src编码为字符串s
  • func DecodeString(s string) ([]byte, error):将hex编码的字符串s解码

json

函数

  • json.Unmarsheal()方法解序列化,
  • json.Marsheal()方法序列化

博客园 lyh225

  • 当有指针出现在数据结构中时,会转换成指针所指的值
  • chanel,complex和函数不能转化为有效的JSON文本,解序列化具有这些字段的结构体会返回错误
  • 不会序列化私有字段

给json字符串添加字段

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	a := `{"a":1,"b":"bbb"}`
	var m map[string]interface{}
	json.Unmarshal([]byte(a), &m)
	m["c"] = struct {
		C float64
	}{5.0}
	by, _ := json.Marshal(m)
	fmt.Println(string(by))
}
 |