-
练习 1.1:修改echo程序输出os.Args[0],即命令的名字。
-
练习 1.2:修改echo程序,输出参数的索引和值,每行一个。
-
练习 1.3:尝试测量可能低效的程序和使用strings.Join的程序在执行时间上的差异。(1.6节有time包,11.4节展示如何撰写系统性的性能评估测试。)
-
练习1.4:修改dup2程序,输出出现重复行的文件的名称。
-
练习1.5:改变利萨茹程序的画板颜色为绿色黑底来增加真实性。使用color.RGBA{0xRR,0xGG,0xGG,0xff}创建一种Web颜色#RRGGBB,每一对十六进制数字表示组成一个像素红、绿、蓝分量的亮度。
-
练习1.6:通过在画板中添加更多颜色,然后通过有趣的方式改变SetColorIndex的第三个参数,修改利萨茹程序来产生多种色彩的图片。
-
练习1.7:函数io.Copy(dst,src)从src读,并且写入dst。使用它代替ioutil.ReadAll来复制响应内容到os.Stdout,这样不需要装下整个响应数据流的缓冲区。确保检查io.Copy返回的错误结果。
-
练习1.8:修改fetch程序添加一个
http://
前缀(假如该URL参数缺失协议前缀)。可能会用到strings.HasPrefix。 -
练习1.9:修改fetch来输出HTTP的状态码,可以在resp.Status中找到它。
-
练习1.10:找出一个产生大量数据的网站。连续再次运行fetchall,看报告的时间是否会有大的变化,调查缓存情况。每一次获取的内容一样吗?修改fetchall将内容输出到文件,这样可以检查它是否一致。
-
练习1.11:使用更长的参数列表来尝试fetchall,例如使用alexa.com排名前100万的网站。如果一个网站没有响应,程序的行为是怎样的?(8.9节会通过复制这个例子来描述响应的机制。)
-
练习1.12:修改萨利茹服务器以通过URL参数读取参数值。例如,你可以通过调整它,使得像
http://localhost:8000/?cycles=20
这样的网址将其周期设置为20,以替代默认的5。使用strconv.Atoi函数来将字符串参数转化为整形。可以通过go doc strconv.Atoi来查看文档。