并发编程-通道使用

1.什么是Channel?

channelGo的通道,是协程之间的通信机制。一个channel是一条通信管道,它可以让一个协程通过它给另一个协程发送数据。每个channel都需要指定数据类型,即channel可发送数据的类型。Go语言主张通过数据传递来实现共享内存,而不是通过共享内存来实现数据传递。

Read More

Go 监听信号退出并回收资源

为什么取这个名字,而不是直接写优雅退出呢?

实际上我一直觉得优雅退出这个名字并不直观,而优雅退出的本质,其实就是监听一些操作系统信号。在监听到退出信号的时候,可以做一些资源回收的操作,而不至于什么都不管直接退出,等到操作系统自己去处理回收这些资源。

Read More

结构体与json相互转换,map与json相互转换

一.结构体转json,使用json.Marshal()返回值([]byte, error)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main

import (
"encoding/json"
"fmt"
)

type Student struct {
Name string
Age int
Gender byte
Subject []string
}

func main() {
s := Student{
"XiaoMing",
15,
'M',
[]string{"数学","语文","英语"},
}
sJson,err := json.Marshal(s)
if err!=nil{
fmt.Println(err)
return
}
fmt.Println("json of s = ",string(sJson))
}

Read More