《go语言圣经》习题答案-第11章
目录
11.1
11.1
注意,为了方便验证程序输出结果,我将charcount程序做了一个小修改:原程序在打印字符统计时是无序的,我将其改为按照字典序打印
wordcount修改如下
// ...counts[r]++utflen[n]++}fmt.Printf("rune\tcount\n")keys := []int{}for c := range counts {keys = append(keys, int(c))}// 将字符排序后按照顺序打印sort.Ints(keys)for _, c := range keys {fmt.Printf("%q\t%d\n", c, counts[rune(c)])}fmt.Print("\nlen\tcount\n")for i, n := range utflen {if i > 0 {fmt.Printf("%d\t%d\n", i, n)}}if invalid > 0 {fmt.Printf("\n%d invalid UTF-8 characters\n", invalid)}
}
测试代码:
package exercise11import ("bytes""fmt""log""os/exec""sort""strings""testing""unicode/utf8"
)
// 根据输入获取预期的输出结果
func getWantString(s string, invalid int) string {counts := map[rune]int{}utflen := [utf8.UTFMax + 1]int{}for _, r := range s {counts[r] += 1if r > 65534 {utflen[4]++} else if r > 2047 {utflen[3]++} else if r > 127 {utflen[2]++} else {utflen[1]++}}builder := bytes.NewBuffer([]byte{})builder.WriteString(fmt.Sprintf("rune\tcount\n"))keys := []int{}for c := range counts {keys = append(keys, int(c))}sort.Ints(keys)for _, c := range keys {builder.WriteString(fmt.Sprintf("%q\t%d\n", c, counts[rune(c)]))}builder.WriteString(fmt.Sprint("\nlen\tcount\n"))for i, n := range utflen {if i > 0 {builder.WriteString(fmt.Sprintf("%d\t%d\n", i, n))}}if invalid > 0 {builder.WriteString(fmt.Sprintf("\n%d invalid UTF-8 characters\n", invalid))}return builder.String()
}
// 执行wordcount程序并获得程序输出
func exec1(s string) (string, error) {cmd := exec.Command("../../../charcount")reader := strings.NewReader(s)cmd.Stdin = readerout, err := cmd.Output()cmd.Run()return string(out), err
}func TestCharcount(t *testing.T) {var tests = []struct {input stringwant string}{{"逆向", getWantString("逆向", 0)},{"\xf1haha", getWantString("haha", 1)},{"", getWantString("", 0)},}for _, x := range tests {s, err := exec1(x.input)if err != nil {log.Fatal(err)}// 如果wordcount的输出与预期的输出不符合则报错if s != x.want {t.Errorf("%s 的预期\n%s与结果\n%s不符合\n", x.input, x.want, s)}}
}
《go语言圣经》习题答案-第11章相关推荐
- 《金融数据分析导论:基于R语言》习题答案(第一章)
<金融数据分析导论:基于R语言>是芝加哥大学的教授Ruey S.Tsay所著,李洪成.尚秀芬.郝瑞丽翻译,机械工业出版社出版,是一本学习R语言和金融数据分析的很好的参考书籍. ** 注 ...
- C++程序设计(第2版)课后习题答案--第11章
11.9 定义分数类Rational...... View Code 1 #include<iostream.h> 2 #include<stdlib.h> 3 class ...
- 河南理工大学c语言程序第六章答案,河南理工大学C语言课后习题答案精解第六章..ppt...
河南理工大学C语言课后习题答案精解第六章. 选择题 (1) C语言中一维数组的定义方式为:类型说明符 数组名 A. [整型常量]B. [整型表达式] C. [整型常量]或[整型常量表达式]D. [变量 ...
- c语言程序设计第四版乌云高娃,C语言程序设计教学课件作者第2版乌云高娃课件源程序及习题答案第4章课件.ppt...
C语言程序设计教学课件作者第2版乌云高娃课件源程序及习题答案第4章课件.ppt 第4章循环结构的流程及应用 学习目标 ? 使用循环处理需要反复执行的操作. ? 循环结构的流程图. ? 循环与条件的综合 ...
- c语言实验答案周信东第三章,桂林电子科技大学C语言程序设计习题答案周信东实验顺序结构与逻辑运算.pdf...
桂林电子科技大学C语言程序设计习题答案周信东实验顺序结构与逻辑运算.pdf 成 绩 良 评 语 继 续 努 力 . 批 改 时 间 2013-11-16 105155 批 改 老 师 实 验 2 顺 ...
- 《Go语言圣经》学习笔记 第九章 基于共享变量的并发
<Go语言圣经>学习笔记 第九章 基于共享变量的并发 目录 竞争条件 sync.Mutex互斥锁 syn.RWMutex读写锁 内存同步 syn.Once初始化 竞争条件检测 示例:并发的 ...
- C语言 用传统流程图表示分段函数,C语言程序设计习题答案
C语言程序设计习题答案 习题一 C语言程序设计概述 一.名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 ...
- 数据结构c语言版第二版第三章课后答案,数据结构(C语言版)习题集答案第三章.doc...
数据结构(C语言版)习题集答案第三章.doc 习题三3.1 3.10 3.13 3.5 3.6 3.15 3.17 3.19 3.24 3.29 3.31 3.51 给定操作序列P1P2P3PiPn( ...
- android应用程序设计张思民课后答案,Java语言程序设计习题答案(清华大学出版杜)张思民版...
Java语言程序设计习题答案(清华大学出版杜)张思民版 更新时间:2017/2/6 12:39:00 浏览量:568 手机版 第1章 Java概述 [1]为什么说Java的运行与计算机硬件平台无关 ...
最新文章
- python数组越界_python 整数越界问题详解
- ThinkPHP控制器
- 面试java后端开发之后的一些感受
- boost::math::statistics相关用法的测试程序
- [剑指offer]面试题第[44]题[JAVA][数字序列中某一位的数字][找规律]
- 4KB/4MB 32位分页模式下的线性地址翻译以及CR3
- 软件开发作为一种价值领域的研究
- 移动应用后端应该使用 AWS 还是 Firebase?
- oracle函数 TO_MULTI_BYTE(c1)
- java 垃圾回收题目_我肝了万字的Java垃圾回收,看完你还敢说不会?
- Java锁--CyclicBarrier
- 智能机器人建房子后房价走势_机器人建楼、5G住宅……房地产下半场要这样玩...
- 君康人寿2019年排名_2019中国保险公司竞争力报告出炉 君康人寿盈利能力排名第二...
- CRM系统与呼叫中心系统对接
- Linux系统centos下如何通过命令查看CPU内存存储等硬件信息?
- 今天看到一句觉得很牛逼的话与诸君共享
- 阿里云的认证费用是多少?考试要多长时间?
- 计算机应用线型类型为虚线方点,cad怎样把线变成虚线或者点划线
- Racket编程指南——13 类和对象
- 操作系统用户接口与计算机接口有什么区别,1.操作系统既是硬件与其他软件的接口,又是用户与计算机之间的接口。...
热门文章
- Vue组件设计 | 实现水波涟漪效果的点击反馈指令
- java项目: ElasticSearch+Spark构建高相关性搜索服务千人千面推荐系统
- Python中进程与线程的(详细)教程之进程
- 腾讯入股巴西Nubank,一场2B2C的试炼
- 人脸识别 + 语音识别实现智能电话会议 | python demo
- wkhtmltopdf设置cookie
- JavaScript中使用递归函数
- [daily][device][bluetooth] 蓝牙怎么办!(archlinux下驱动蓝牙鼠标,以及三星手机)...
- Hadoop_HDFS的读写流程
- 性能优化之MySQL(Structured Query Languag)