编码转换

不论从哪个面向,都可以看出 Go 独厚 UTF-8,这可能是因为 Go 的设计者之一 Ken Thompson,也曾经参与了 UTF-8 的设计。 如果文本数据的来源并非 UTF-8 呢?例如,存储时.........

unicode 包

unicode、unicode/utf8、unicode/utf16 是用来判断、处理 Unicode 以及 UTF-8、UTF-16 编码的包,在使用这些包之前,要先知道的是,Go 认为「字符」.........

bytes 包

Go 字符串的本质是 []byte,如果想基于字节来处理字符串,或者是想处理其他来源的 []byte,可以使用 bytes 包。 因为 Go 字符串本质上就是一组 Unicode 码的 UTF-8 编.........

strconv、strings 包

Go 的字符串基本上是个 []byte,在程序语言强弱类型的光谱中,Go 位于强类型的一端,对于字符串与其他类型之间的转换,往往得自行处理,在这方面,strconv 包就提供了不少的函数。 例如,最常用.........

ring 包

对于环状数据结构,Go 提供了 container/ring 包,Ring 结构有 Value 字段,可以使用 New 指定元素数量来创建实例,可用的方法有: func (r *Ring) Do(f.........

heap 包

如果在收集元素的过程中,想要一并排序,方式之一是使用堆排序,对于这个需求,Go 提供了 heap 包作为实现上的辅助。 heap 包提供的是最小堆树演算,底层的数据结构必须实现 heap.In.........

list 包

如果想连续地看待一组数据,可以使用 slice,优点是可以透过索引快速访问,透过 append 也可以附加元素,若偶而需要安插、删除元素,可以透过切片等操作来实现。 然而,如果经常性地需要安插、删除元.........

sort 包

Go 提供了 sort 包来协助排序、搜寻任务,对于 []int、[]float64 与 []string,可以透过 Ints、Float64s、Strings 来由小而大排序,可以使用 IntsA.........

errors 包

在 Go 1.13 之前,errors 包只公开了 New 函数,从 Go 1.13 之后,增加了 Is、As、与 Unwrap 函数。 Is 函数是用于取代 == 判断错误的场合,例如以下的程序片.........

错误的比对

如果函数或方法返回错误,要比对的不单只是 nil 与否,例如,读取文件时,会需要判断返回的错误是否为 io.EOF,那么 io.EOF 这些错误是什么呢?在 io 包的 io.go 源码中可以看到.........

err 是否 nil?

对于错误,Go 不采取异常处理机制,而是透过返回 error 值来表示是否发生了什么错误,最基本的做法就是: if err != nil { // 做些什么 } 然而,接触 Go 不用多久就.........

文件操作

想要进行目录、文件等的操作,基本上就是查看 os 包,可以使用的函数很多,逐一谈好像也没太大意义,基本上若对目录、文件以及权限等有所认识,应该查查文件、搜寻一些范例,大致就知道怎么用吧! 无论如何,.........