随笔分类 - golang
学习记录
摘要:题目: 在这个练习中,我们将会使用 Go 的并发特性来并行化一个 Web 爬虫。 修改Crawl函数来并行地抓取 URL,并且保证不重复。 提示:你可以用一个 map 来缓存已经获取的 URL,但是要注意 map 本身并不是并发安全的! package main import ( "fmt" "sy
阅读全文
摘要:题目: 不同二叉树的叶节点上可以保存相同的值序列。例如,以下两个二叉树都保存了序列 1,1,2,3,5,8,13。 在大多数语言中,检查两个二叉树是否保存了相同序列的函数都相当复杂。 我们将使用 Go 的并发和信道来编写一个简单的解法。 本例使用了tree包,它定义了类型: type Tree st
阅读全文
摘要:题目: 还记得之前编写的图片生成器吗?我们再来编写另外一个,不过这次它将会返回一个image.Image的实现而非一个数据切片。 定义你自己的Image类型,实现必要的方法并调用pic.ShowImage。 Bounds应当返回一个image.Rectangle,例如image.Rect(0, 0,
阅读全文
摘要:题目: 有种常见的模式是一个io.Reader包装另一个io.Reader,然后通过某种方式修改其数据流。 例如,gzip.NewReader函数接受一个io.Reader(已压缩的数据流)并返回一个同样实现了io.Reader的*gzip.Reader(解压后的数据流)。 编写一个实现了io.Re
阅读全文
摘要:题目: 实现一个Reader类型,它产生一个 ASCII 字符'A'的无限流。 package main import "golang.org/x/tour/reader" type MyReader struct{} // TODO: 给 MyReader 添加一个 Read([]byte) (i
阅读全文
摘要:题目: 从之前的练习中复制Sqrt函数,修改它使其返回error值。 Sqrt接受到一个负数时,应当返回一个非nil的错误值。复数同样也不被支持。 创建一个新的类型 type ErrNegativeSqrt float64 并为其实现 func (e ErrNegativeSqrt) Error()
阅读全文
摘要:题目: 通过让IPAddr类型实现fmt.Stringer来打印点号分隔的地址。 例如,IPAddr{1, 2, 3, 4}应当打印为 "1.2.3.4"。 package main import "fmt" type IPAddr [4]byte // TODO: 给 IPAddr 添加一个 "S
阅读全文
摘要:题目: 让我们用函数做些好玩的事情。 实现一个fibonacci函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 (0, 1, 1, 2, 3, 5, ...)。 package main import "fmt" func fibonacci() func() int { f1, f2 :
阅读全文
摘要:题目: 实现WordCount。它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数。函数wc.Test会对此函数执行一系列测试用例,并输出成功还是失败。 你会发现 strings.Fields 很有帮助。 package main import ( "golang.org/x/tour/w
阅读全文
摘要:题目: 实现Pic。它应当返回一个长度为dy的切片,其中每个元素是一个长度为dx,元素类型为uint8 的切片。当你运行此程序时,它会将每个整数解释为灰度值(好吧,其实是蓝度值)并显示它所对应的图像。 图像的选择由你来定。几个有趣的函数包括 (x+y)/2, x*y, x^y, x*log(y)和x
阅读全文

浙公网安备 33010602011771号