Skip to Main Content
Go程序设计语言
book

Go程序设计语言

by 艾伦A. A.多诺万, 布莱恩W. 柯尼汉
August 2021
Beginner to intermediate content levelBeginner to intermediate
450 pages
6h 1m
Chinese
Pearson
Content preview from Go程序设计语言

1.3 找出重复行

用于文件复制、打印、检索、排序、统计的程序,通常有一个相似的结构:在输入接口上循环读取,然后对每一个元素进行一些计算,在运行时或者在最后输出结果。我们展示三个版本的dup程序,它受UNIX的uniq命令启发来找到相邻的重复行。这个程序使用容易适配的结构和包。

第一个版本的dup程序输出标准输入中出现次数大于1的行,前面是次数。这个程序引入if语句、map类型和bufio包。

像for一样,if语句中的条件部分也从不放在圆括号里面,但是程序体中需要用到大括号。这里还可以有一个可选的else部分,当条件为false的时候执行。

map存储一个键/值对集合,并且提供常量时间的操作来存储、获取或测试集合中的某个元素。键可以是其值能够进行相等(==)比较的任意类型,字符串是最常见的例子;值可以是任意类型。这个例子中,键的类型是字符串,值是int。内置的函数make可以用来新建map,它还可以有其他用途。map将在4.3节中进行更多讨论。

每次dup从输入读取一行内容,这一行就作为map中的键,对应的值递增1。语句counts[input.Text()]++等价于下面的两个语句:

键在map中不存在时也是没有问题的。当一个新的行第一次出现时,右边的表达式counts[line]根据值类型被推演为零值,int的零值是0。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
Go语言编程

Go语言编程

威廉·肯尼迪

Publisher Resources

ISBN: 9787111558422