Go语言基础——基础语法 | 青训营笔记

58 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

字符串格式化

  • 可以使用%v格式化打印任意类型数据,格式化打印结构体时,只会打印值
  • 使用%+v格式化打印结构体时,会将结构体的变量名也打印出来
  • 使用%#v格式化打印结构体时,会将结构体名称和结构体变量名都打印出来

json处理

go内置的encoding/json组件库提供了json处理能力

json.Marshal方法可以将类型转换成json字符串

json.UnMarshal方法可以将json字符串转换成对应结构体

type UserInfo struct {
	Name string
	Age int `json:"age"`
	Hobby []string
}

func main() {
	a := UserInfo{Name: "wang", Age: 18, Hobby: []string{"Golang", "TypeScript"}}
	buf, err := json.Marshal(a)
	if err != nil {
		panic(err)
	}
	fmt.Println(buf)          // 打印出来的是字节序列
	fmt.Println(string(buf))  // 打印出字符串

	var b UserInfo
	err = json.UnMarshal(buf, &b)
	if err != nil {
		panic(err)
	}
	fmt.Printf("%#v\n", b)
}

时间处理

import (
	"time"
	"fmt"
)

func main() {
	now := time.Now()
        //2023-01-16 17:20:41.093941705 +0800 CST m=+0.000076417
	fmt.Println(now)    
	t := time.Data(2022, 3, 27, 1, 25, 36, 0, time.UTC)
	t2 := time.Data(2022, 3, 27, 2, 30, 36, 0, time.UTC)
	fmt.Println(t)
	fmt.Println(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute())
	fmt.Println(t.Format("2006-01-02 15:11:11"))   
	diff := t2.Sub(t)   
	fmt.Println(diff.Minutes(), diff.Seconds())
	t3, err := time.Parse("2006-05-21 14:12:12", "2023-01-16 17:20:41")
	if err != nil {
		panic(err)
	}
	fmt.Println(t == t3)       // true
	fmt.Println(now.Unix())    
}

time.Now()最常用的时间处理,用于获取当前时间

可以通过Year、Month、Day、Hour、Minute方法来获取当前时间对象的年月日等值

可以通过Format方法将时间对象通过设定的格式输出

可以通过Sub方法获得两个时间点的时间差

可以通过Unix方法获取时间戳(即毫秒数)

实用工具

快速生成发送请求的go代码

工具网址: curlconverter.com/#go

在网页检查页面,右键点击想要请求的网络请求项,然后点击复制,再点击复制为cURL(bash)

2023-01-16 (1).png

快速将json转换成go结构体

工具链接: oktools.net/json2go

只要将json串复制进去,就可以生成与其相对应的结构体