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程序设计语言

12.3 Display:一个递归的值显示器

接下来我们看一下如何改善组合类型的显示。这次,我们不再实现一个fmt.Sprint,而是实现一个称为Display的调试工具函数,这个函数对给定的任意一个复杂值x,输出这个复杂值的完整结构,并对找到的每个元素标上这个元素的路径。下面先看一个例子。

在上面的调用中,Display的参数是一个从表达式求值器生成的语法树(参考7.9节)。Display的输出如下所示:

我们应当尽可能避免在包的API里

边暴露反射相关的内容。我们将定义一个未导出的函数display来做真正的递归处理,再暴露Display,而Display则只是一个简单的封装,并且接受一个interface{}参数:

在display中,我们使用之前定义的formatAtom函数来输出基础值(基础类型、函数和通道),使用reflect.Value的一些方法来递归展示复杂类型的每个组成部分。当递归深入时,path字符串(之前用来表示起始值,比如“e”)会增长,以表示如何找到当前值(比如“e.args[0].value”)。 ...

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