0%

在文件系统中,许多文件的文件名带有空格;在Linux系统中默认以空格做为值与值之间的分隔符,shell处理这些文件名时,需要使用特别的处理方式。

当程序的某个功能需要依赖底层平台或者根据特定处理器进行不同的实现时,提供特定的实现就非常有必要。

gob是Go语言自带的一个数据序列化的编码/解码工具。类似于 Java 的 Serialization
gob和json,xml之类序列化实现一样,使用Encoder对数据进行编码,使用Decoder解码。

非法竞态访问数据 是指无任何同步保护下并行读写同一份数据。
go命令内置了非法竞态访问数据的检测工具。可以使用go run -race或者go build -race来进行竞争检测。

Go语言的os/exec包封装了调用外部可执行程序的操作。它包装了os.StartProcess,以便更容易映射stdinstdout,使用管道连接I/O,并进行其它调整。
os/exec假定运行在Linux环境,windows某些操作可能无法执行,此包的操作也无法在Go Playground上运行。

encoding/binary包实现了数字与[]byte之前的简易转换,及其变体的编码与解码。
encoding/binary包更倾向于易用,而不是高性能,如果需要一个高性能的序列化或者需要处理大量数据,请优先考虑encoding/gob或者protocol buffers

逃逸分析是一种确定指针动态范围的方法,简单来说就是分析在程序的哪些地方可以访问到某个指针。
Go是通过在编译器里做逃逸分析(escape analysis)来决定一个对象放栈上还是放堆上。
不逃逸的对象放栈上,随着函数退出后系统直接回收,不需要gc标记后再清除。
可能逃逸的放堆上,由系统GC来进行垃圾回收。