Go

练习 Web 爬虫

问题 在这个练习中,我们将会使用 Go 的并发特性来并行化一个 Web 爬虫。 修改 Crawl 函数来并行地抓取 URL,并且保证不重复。 提示:你可以用一个 map 来缓存已经获

练习 等价二叉查找树

问题 不同二叉树的叶节点上可以保存相同的值序列。例如,以下两个二叉树都保存了序列 `1,1,2,3,5,8,13`。 在大多数语言中,检查两个二叉

练习 图像

问题 还记得之前编写的图片生成器吗?我们再来编写另外一个,不过这次它将会返回一个 image.Image 的实现而非一个数据切片。 定义你自己的 Image 类型,实现必要的方法并

练习 rot13Reader

问题 有种常见的模式是一个 io.Reader 包装另一个 io.Reader,然后通过某种方式修改其数据流。 例如,gzip.NewReader 函数接受一个 io.R

练习 Reader

问题 实现一个 Reader 类型,它产生一个 ASCII 字符 ‘A’ 的无限流。 背景知识 了解Go语言的接口实现方式。 Go读取流的方式 实现思路 定义MyReader结构体 为

练习 错误

问题 从之前的练习中复制 Sqrt 函数,修改它使其返回 error 值。 Sqrt 接受到一个负数时,应当返回一个非 nil 的错误值。复数同样也不被支持。 创建一个新的类型 type ErrNegativeSqrt float64 并

练习 Stringer

问题 通过让 IPAddr 类型实现 fmt.Stringer 来打印点号分隔的地址。 例如,IPAddr{1, 2, 3, 4} 应当打印为 “1.2.3.4”。 背景知识 类型的定义 实现类型的自定义函

练习 斐波纳契闭包

练习 斐波纳契闭包 问题 让我们用函数做些好玩的事情。 实现一个 fibonacci 函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 `(0, 1, 1, 2, 3, 5, ...)`。 背

练习 映射

问题 实现 WordCount。它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数。函数 wc.Test 会对此函数执行一系列测试用例,并输出成功还是失败