/images/hugo/avatar.png

go 数据格式转换

1. json

2. yaml

3. ini

4. binary

标准库提供的binary包直接读写抽象数据类型实例。binary 只支持采用定长表示的抽象数据类型。

5. gob

gob包也是Go标准库提供的一个序列化/反序列化方案,和JSON、XML等序列化/反序列化方案不同,它的API直接支持读写实现了io.Reader和io.Writer接口的实例。

go 文本操作

1. 字符操作

strings 和 bytes 提供了 go 语言中的字符操作,因为还不不支持泛型,所以这两个包提供了几乎一样的函数和类型,区别仅仅在于一个操作 string,其中大致可分为如下几类:

go time

1. 时间基础操作

1.1 时间的表示

获取当前时间可以使用 time.Now(),Now 返回的是 Time 结构的结构,Time 是对即时时间的抽象。time.Time的结构如下:

go 的文件 IO

这个系列我们开始学习 Go 语言的第五个部分: 库。 接下来我们就从 Go 的文件 I/O 说起。

1. 文件 IO 概述

1.1 标准库的读写模型

Go基于io.Writer和io.Reader这两个简单的接口类型构建了图57-1所示的Go标准库读写模型。

go 信号处理

在Go中,通过系统信号是实现优雅退出的一种常见手段。

1. 信号处理

应用程序收到系统信号后,一般有三种处理方式。

  1. 执行系统默认处理动作,对于中断键触发的SIGINT信号,系统的默认处理动作是终止该应用进程
  2. 忽略信号
  3. 捕捉信号并执行自定义处理动作,需要应用程序提前为信号注册一个自定义处理动作的函数。系统中有两个系统信号是不能被捕捉的:终止程序信号SIGKILL和挂起程序信号SIGSTOP

服务端程序一般都是以守护进程的形式运行在后台的,并且我们一般都是通过系统信号通知这些守护程序执行退出操作的。如果执行默认处理动作直接退出,守护进程将没有任何机会执行清理和收尾工作。因此,对于运行在生产环境下的程序,不能忽略对系统信号的处理,而应采用捕捉退出信号的方式执行自定义的收尾处理函数。

go 字符集编码/解码

1. 字符集原理

Go语言默认源码文件中的字符是采用UTF-8编码方案的Unicode字符。在Go中,每个rune对应一个Unicode字符的码点,而Unicode字符在内存中的编码表示则放在[]byte类型中。从rune类型转换为[]byte类型,称为“编码”(encode),而反过来则称为“解码”(decode)。