- 用于各种类型数据的转换,出现错误(例如不可转),返回默认值
-
下载安装
go get github.com/injoyai/conv
-
字符串转整数
pakeage main import "github.com/injoyai/conv" func main(){ var a string = "101" result := conv.Int(a) fmt.Println(result) // 得到结果 101 }
-
十六进制转十进制
pakeage main import "github.com/injoyai/conv" func main(){ var a string = "x0aa" var b string = "x0ff" var c string = "0b01011" fmt.Println(conv.Uint8(a)) // 得到结果 170 fmt.Println(conv.Uint8(b)) // 得到结果 255 fmt.Println(conv.Int(c)) // 得到结果 11 }
-
二进制字符串
pakeage main import "github.com/injoyai/conv" func main(){ var a uint16 = 100 // 根据数字类型的位数 得到对应长度(8的倍数)的二进制(只包含0和1)字符串 fmt.Println(conv.BinStr(a)) // 得到结果 "0000000001100100" fmt.Println(conv.BinStr(int8(b))) // 得到结果 "01100100" }
-
布尔类型
pakeage main import "github.com/injoyai/conv" func main(){ var a int = 3 // 数字类型 0 为false ,其余为true fmt.Println(conv.Bool(a)) // 得到结果 true a = 0 fmt.Println(conv.Bool(a)) // 得到结果 false var b string = "开" fmt.Println(conv.Bool(b)) // 得到结果 true }
-
conv.Unmarshal(a,b)能解析任意数据a到b
package main import "github.com/injoyai/conv" func main(){ m := map[string]interface{}{ "a": 1, "b": "2", "c": true, "d": 1.02, "e": 20.1, "f": 30.6, "G": map[string]interface{}{ "h": "10", }, } type _struct struct { A int `json:"a"` B string `json:"b"` C bool `json:"c"` D float64 `json:"d"` E float64 F string `json:"f"` G struct { H int `json:"h"` } } x := new(_struct) if err := conv.Unmarshal(m, x); err != nil { fmt.Println(err) return } //得到 _struct{A:1, B:"2", C:true, D:1.02, E:0, F:"30.6", G:struct { H int "json:\"h\"" }{H:10}} fmt.Println("%#v", *x) }
-
Map能一直深入解析数据,直到不能解析,目前支持Json,Ini,Toml,Yaml,Xml
package main func main(){ //假设有这么一个数据 data :=`{"a":{"b":[0,1,2,3],"c":{"d":"d"}}}` //转成Map类型,默认使用json解析 m :=conv.NewMap(data) m.GetString("a.b[3]") //得到"3" m.Append("a.b","4") fmt.Println(m) //输出 {"a":{"b":[0,1,2,3,"4"],"c":{"d":"d"}}} m.Set("c.d":[]int{1,2,3}) fmt.Println(m) //输出 {"a":{"b":[0,1,2,3,"4"],"c":{"d":[1,2,3]}}} m.Del("c.d[0]") m.Del("c.d[-1]") fmt.Println(m) //输出 {"a":{"b":[0,1,2,3,"4"],"c":{"d":[2]}}} }
-
cfg包是读取配置,能够读取到每一层级,默认解析JSON,读取位置(./config/config.json)
package main import ( "github.com/injoyai/conv" "github.com/injoyai/conv/codec" ) func main(){ /* 默认读取配置路径 ./config/config.json 假设内容如下: { "http":{ "port":8000 }, "tcp":{ "port":9000 }, "test":[ { "name":"injoy" } ] } */ fmt.Println(cfg.GetInt("http.port")) // 得到结果 8000 fmt.Println(cfg.GetInt("tcp.port")) // 得到结果 9000 fmt.Println(cfg.GetInt("test[0].name")) // 得到结果 "injoy" //自定义yaml配置文件读取 c :=cfg.WithPath("./xxx.yaml", codec.Yaml) c.GetString("http.port") }