go 开发小结

栏目: IT技术 · 发布时间: 4年前

内容简介:有嵌套,把需要解析的字段一一列出,这里注意要首字母大写,否则无法解析。

数据互相转换

  • int 转string
string := strconv.Itoa(int)
  • string到int
int,err := strconv.Atoi(string)
  • string到int64
int64, err := strconv.ParseInt(string, 10, 64)
  • int64到string
string := strconv.FormatInt(int64,10)
  • map 到json字符串
m := map[string]string{}
mjson,_ :=json.Marshal(m)
mString :=string(mjson)
  • json到struct

    如果是单层可以直接用interface转为map

jsonStr = `{}`
var jsonStruct interface{}
JSON.Unmarshal([]byte(jsonStr), &jsonStruct)

有嵌套,把需要解析的字段一一列出,这里注意要首字母大写,否则无法解析。

type MyStruct struct{
  Name string `json:"name"`
}
jsonStr = `{name: 12}`
var jsonStruct MyStruct{}
JSON.Unmarshal([]byte(jsonStr), &jsonStruct)

字符串拼接

  • 将非字符串数据转为字符串拼接
  • 使用fmt.Sprintf()
//拼接一个数字和字符串
name := "ste"
age := 18
info :=fmt.Sprintf("name:s%;age:d%", name, age)

struct 结构体遍历

values := reflect.ValueOf(deflateObj)
keys := reflect.TypeOf(deflateObj)
for i := 0; i < values.NumField(); i++ {
    key := keys.Field(i).Name
    value := values.Field(i).String()
    fmt.Println(key)
    fmt.Println(value)
}

http 请求

  • 普通请求
client := &http.Client{}
params := map[string]string{}
paramsData, _ := JSON.Marshal(params)
// 请求参数body是要转buffer
request, err := http.NewRequest("POST", url, bytes.NewBuffer(paramsData))
if err != nil {
    fmt.Println("出错了:", err, request)
}
// 添加请求头
request.Header.Add("Content-Type", "application/json")
response, _ := client.Do(request)
defer response.Body.Close()
// 返回结果body是byte
body, errRes := ioutil.ReadAll(response.Body)
  • 发送pb格式数据

    只需要修改请求头,转一下请求体数据格式即可,这里用到 go 的proto模块github.com/golang/protobuf/proto

// 修改Content-Type
request.Header.Add("Content-Type", "application/x-protobuf")
myData := protocol.MyData{}
// 请求数据转为pb格式
paramsData, _ := proto.Marshal(&myData)

fmt占位符

占位符 说明 举例 输出
%v 相应值的默认格式。 Printf("%v", people) {zhangsan}
%+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan}
%#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"}
%T 相应值的类型的Go语法表示 Printf("%T", people) main.Human
%% 字面上的百分号,并非值的占位符 Printf("%%") %
%t true 或 false。 Printf("%t", true) true
%b 二进制表示 Printf("%b", 5) 101
%c 相应Unicode码点所表示的字符 Printf("%c", 0x4E2D)
%d 十进制表示 Printf("%d", 0x12) 18
%o 八进制表示 Printf("%d", 10) 12
%q 单引号围绕的字符字面值,由Go语法安全地转义 Printf("%q", 0x4E2D) '中'
%x 十六进制表示,字母形式为小写 a-f Printf("%x", 13) d
%X 十六进制表示,字母形式为大写 A-F Printf("%x", 13) D
%U Unicode格式:U+1234,等同于 "U+%04X" Printf("%U", 0x4E2D) U+4E2D
%b 无小数部分的,指数为二的幂的科学计数法,与 strconv.FormatFloat 的 'b' 转换格式一致。
%e 科学计数法,例如 -1234.456e+78 Printf("%e", 10.2) 1.020000e+01
%E 科学计数法,例如 -1234.456E+78 Printf("%e", 10.2) 1.020000E+01
%f 有小数点而无指数,例如 123.456 Printf("%f", 10.2) 10.200000
%g 根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出 Printf("%g", 10.20) 10.2
%G 根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出 Printf("%G", 10.20+2i) (10.2+2i)
%s 输出字符串表示(string类型或[]byte) Printf("%s", []byte("Go语言")) Go语言
%q 双引号围绕的字符串,由Go语法安全地转义 Printf("%q", "Go语言") "Go语言"
%x 十六进制,小写字母,每字节两个字符 Printf("%x", "golang") 676f6c616e67
%X 十六进制,大写字母,每字节两个字符 Printf("%X", "golang") 676F6C616E67
%p 十六进制表示,前缀 0x Printf("%p", &people) 0x4f57f0

欢迎关注我们的微信公众号,每天学习Go知识

go 开发小结

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Numerical Methods and Methods of Approximation in Science and En

Numerical Methods and Methods of Approximation in Science and En

Karan Surana / CRC Press / 2018-10-31

ABOUT THIS BOOK Numerical Methods and Methods of Approximation in Science and Engineering prepares students and other readers for advanced studies involving applied numerical and computational anal......一起来看看 《Numerical Methods and Methods of Approximation in Science and En》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具