Panic异常
1、使用defer + recover处理
2、或者程序启动时就让他出错 (初始化全局变量和 init)(军哥亲授)
Json
Age int `json:"age,omitempty"` 序列化时忽略0值或空值
type People struct {
Name string `json:"name"`
Age int `json:"age,omitempty"`
}
p := People{Name: "zs", Age: 18}
zs, _ := json.Marshal(p)
fmt.Println(zs) //[123 34 110 97 109 101 34 58 34 122 115 34 44 34 97 103 101 34 58 49 56 125]
fmt.Println(string(zs)) //{"name":"zs","age":18}
并发
defer:函数最后执行
go:Golang源代码都跑在goroutine中 使用go关键字就可以启动一个goroutine runtime对goroutine进行调度
Channel:(不要以共享内存的方式来通信,要通过通信的方式共享内存)
例:
messages := make(chan string, 1) 1为默认值 指定容量
go func() { messages <- “ping” } ()
msg := <-messages
Fat.Println(msg)
Range:当range发现信道被关闭,就结束
第一个协程5次循环,向信道中写string,循环结束,关闭信道
第二个协程:
for s := range chanData {
fat.Println(“s”)
}
select:用于有多个信道的情况下(提高效率,不至于某信道阻塞)
Select中有case代码块(每一个case,必须是一个信道IO指令,default命令块不是必须)