您的位置 首页 golang

golang常用库

常用库

fmt

占位符

说明

%v

按原本的值来输出

%+v

类似%v,但输出结构体是会加上字段名称

%#v

在%+v的基础上额外输出类型

%T

输出类型

%s

输出字符串或者[]byte

%d

表示十进制

print

  • Println:
  • 一次输入多个值的时候 Println 中间有空格
  • Println 会自动换行,Print 不会
  • Print:
  • 一次输入多个值的时候 Print 没有 中间有空格
  • Print 不会自动换行
  • Printf
  • Printf 是格式化输出,在很多场景下比 Println 更方便

Sprint

  • 会把答应数据生成,并返回一个字符串
   s2 := fmt.Sprintf("name:%s,age:%d", name, age)
  

time

时间大致有3种类型

  • 时间对象
  • 时间戳
  • 格式化时间
  • Add 用于时间相加
  • Sub 用于两个时间求差值
  • %02d 中的 2 表示宽度,如果整数不够 2 列就补上 0
  • Equal
  • 判断两个时间是否相同,会考虑时区的影响,因此不同时区标准的时间也可以正确比较。
  • 本方法和用t==u不同,这种方法还会比较地点和时区信息。
  • Before
  • 如果t代表的时间点在u之前,返回真;否则返回假。
  • After
  • 如果t代表的时间点在u之后,返回真;否则返回假。
  • time.Tick 定时器
 package main

import (
    "fmt"
    "time"
)

func main() {
    // 获取当前时间的时间对象
    now := time.Now()
    fmt.Println(now)

    // 格式化时间
    strTime := now.Format("2006-01-02 15:04:05") 
  // 2006-01-02 15:04:05 必须是这个时间,go诞生的时间 记忆方法就是 2006 1 2 3 4 5
    fmt.Println(strTime)

    //可以将时间对象转换为时间戳
    fmt.Println(now.Unix())

    // 将字符串时间转换为golang中的时间对象
    loc, err := time.LoadLocation("Asia/Shanghai")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(loc)
    timeObj, err := time.ParseInLocation("2006/01/02 15:04:05", "2022/03/28 14:15:20", loc)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%T %v \n", timeObj, timeObj)

    // Add方法,用于加时间的
    // 1分钟前
    m, _ := time.ParseDuration("-1m")
    m1 := now.Add(m)
    fmt.Println(m1)
    // 1分钟后
    mm, _ := time.ParseDuration("1m")
    mm1 := now.Add(mm)
    fmt.Println(mm1)

    // Sub方法 用于求两个时间的饿差值
    demoSub := mm1.Sub(m1)
    fmt.Println(demoSub)

  year := now.Year()     //年
    month := now.Month()   //月
    day := now.Day()       //日
    hour := now.Hour()     //小时
    minute := now.Minute() //分钟
    second := now.Second() //秒
  // 02d表示宽度,不够两位就补上0 比如9就是09 
    fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)

  demoEqual := mm1.Equal(m1)
    fmt.Println(demoEqual)

    demoAfter := mm1.After(m1)
    fmt.Println(demoAfter)

    demoBefore := mm1.Before(m1)
    fmt.Println(demoBefore)
}

// 定时任务
func tickDemo() {
    ticker := time.Tick(time.Second) //定义一个1秒间隔的定时器
    for i := range ticker {
        fmt.Println(i) //每秒都会执行的任务
    }
}
  

OS

操作系统执行命令的函数

参考

flag

实现了命令行解析参数,类似python的argparse

 package main
import (
    "flag"
    "fmt"
    "time"
)

func main() {
    //定义命令行参数方式1
    var name string
    var age int
    var married bool
    var delay time.Duration
    flag.StringVar(&name, "name", "张三", "姓名") // name就是变量名,张三就是默认值,姓名就是描述
    flag.IntVar(&age, "age", 18, "年龄")
    flag.BoolVar(&married, "married", false, "婚否")
    flag.DurationVar(&delay, "d", 0, "延迟的时间间隔")

    //解析命令行参数
    flag.Parse()
    fmt.Println(name, age, married, delay)
    //返回命令行参数后的其他参数
    fmt.Println(flag.Args())
    //返回命令行参数后的其他参数个数
    fmt.Println(flag.NArg())
    //返回使用的命令行参数个数
    fmt.Println(flag.NFlag())
}

// 查看帮助 go run main.go --help
  

encoding/json

  • json和struct互相转换
  • 序列化是指把结构体数据转化成 JSON 格式的字符串
  • 反序列化是指把 JSON 数据转化成 Golang 中的结构体对象
  • Golang 中 的 序 列 化 和 反 序 列 化 主 要 通 过 “encoding/json” 包 中 的 json.Marshal() 和 json.Unmarshal()方法实现
  • tag可以用来映射struct中的key和json中的key
 package main

import (
    "encoding/json"
    "fmt"
)

type Student struct {
    ID int `json:"id,string"`
    // 加上 ,string 可以处理前端传过来的字符串格式的数据,添加string来告诉json包从字符串中解析相应字段的数据
    Gender string `json:"gender"` // tag可以指定struct转换为json的时候的key
    name   string //私有属性不能被 json 包访问
    Age    int    `json:"age"`
}

func structToJson() {
    s1 := Student{
        ID:     1,
        Gender: "xxx",
        name:   "lalala", //小写字母开头的是私有属性,不能被json.Marshal 转换出来
        Age:    18,
    }
    fmt.Printf("%#v \n", s1)

    s, _ := json.Marshal(s1)
    str := string(s)
    fmt.Println(str)
    fmt.Printf("%T", s1.ID)
}
func jsonToStruct() {
    var s2 Student
    str2 := `{"id":"1","gender":"男","Name":"李四","age":19}`
    err := json.Unmarshal([]byte(str2), &s2)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Printf("%#v \n", s2)
}

func main() {
    structToJson()
    jsonToStruct()
}
  

文章来源:智云一二三科技

文章标题:golang常用库

文章地址:https://www.zhihuclub.com/86223.shtml

关于作者: 智云科技

热门文章

网站地图