Go语言笔记3

49 阅读1分钟

JSON处理

  • 是什么:

    它是指对JSON(JavaScript Object Notation)数据进行操作和转换的过程。JSON是一种轻量级的数据交换格式,常用于在不同系统之间传输和存储数据。

  • 为什么:

    • 可读性和可调试性好:JSON使用简洁的文本格式表示数据

      eg. Person结构体的JSON表示为{"name":"Alice","age":25}

    • 跨平台和编程语言进行交流和共享数据

    • 支持各种复杂的数据结构,将对象、切片等转化为字符串,方便传输

    • 易于生成和解析

  • 适用场合:

    • 数据交换

    • 存储配置信息:保存用户偏好设置

      eg. "Autosave: on, RTX: on"用字符串来保存

    • 在Web API中用JSON在客户端和服务器之间进行数据传输

  • 怎么做:

    • 在Go中,可以使用内置的encoding/json

    • 【生成】使用json.Marshal函数

      Go数据结构 → JSON格式字节切片

    • 【解析】使用json.Unmarshal函数

      JSON格式字节切片 → Go数据结构

    • 实例:紫色为重点

package main

import (
  "encoding/json"
  "fmt"
)

type Person struct {
  Name string `json:"name"`
  Age  int    `json:"age"`
}

func main() {
  // 编码为JSON
  person := Person{Name: "Alice", Age: 25}
  jsonData, err := json.Marshal(person)
  if err != nil {
    fmt.Println("JSON encoding error:", err)
    return
  }
  fmt.Println(string(jsonData))
  //结果:{"name":"Alice","age":25}
  
  // 解码JSON
  var decodedPerson Person
  err = json.Unmarshal(jsonData, &decodedPerson)
  if err != nil {
    fmt.Println("JSON decoding error:", err)
    return
  }
  fmt.Println(decodedPerson)
  //结果:{Alice 25}
}

时间处理

time包

`time.Now()` 获取当前时间

`t2.Sub(t1)` t2减去t1得到`XXh XXm XXs` 结果

字符串和数字之间的转换

strconv 包,string convert

  • strconv.ParseInt("123", 0, 64) 得到123,将字符串转换为数字,0代表自动识别进制,64代表精度位数
  • strconv.Atoi("123") 快速转化为数字