登录
首页 >  Golang >  Go问答

如果 Go 中的字段被“过滤”,这意味着什么?

来源:stackoverflow

时间:2024-04-16 12:09:38 445浏览 收藏

golang学习网今天将给大家带来《如果 Go 中的字段被“过滤”,这意味着什么?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

在 go 文档中,类型通常仅显示导出的字段。例如,time.timer 文档 (https://golang.org/pkg/time/#timer) 显示以下内容:

类型 定时器 timer 类型代表单个事件。当定时器 到期时,当前时间将在 c 上发送,除非计时器已过期 由 afterfunc 创建。必须使用 newtimer 创建计时器或 后功能。

type Timer struct {
     C <-chan Time
     // contains filtered or unexported fields
}

go 能够区分导出字段和未导出字段,因此这一点很清楚。但是,包含“过滤”字段是什么意思(例如在上面评论的上下文中)?


解决方案


那个commentgo/printer 代码根据传递给它的 AST 生成。一些 AST 节点有一个 field,将它们标记为不完整,并且该字段由打印机设置为 useddecide 是否打印该注释。然而,打印机无法知道该字段设置为 true 或 false 的规则和原因,因此按照惯例,假设它是由过滤器完成的,最常见的过滤器是 exportFilter,因此是语言。

Incomplete 字段已导出,并且可以由有权访问 AST 的任何内容设置为 true/false。您可以自己遍历 AST,将每个 Incomplete 字段设置为 true,同时保持节点完好无损,然后将 AST 传递到打印机,然后打印机将生成包含所有字段(导出和未导出)的结构以及该注释。

Godoc filters AST 与 ast.FileExports 默认情况下仅删除未导出的节点,然后将 passes AST 发送到打印机。因此,就 Godoc 而言,该评论中的“已过滤”与“未导出”同义。

Playground link 来说明打印机的行为。

终于介绍完啦!小伙伴们,这篇关于《如果 Go 中的字段被“过滤”,这意味着什么?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>