假设,但不是出于想象,在您的程序中,您从expvar包[1]中注册了一堆统计变量,以便在公开的JSON结果中具有易于识别的名称。在一个常见的实现中,你可能会有大量的全局变量,对应着程序跟踪的各种信息。这些变量与其他全局变量杂乱无章,这在美学上并不令人愉悦,如果我们能解决这个问题,事情就会好一些。感谢Go对匿名结构类型的支持,我们可以做到。我们可以创建一个基于匿名结构类型的变量集合的命名空间:")}在我们的代码中,我们可以使用events.connects等,而不必使用一些糟糕或模棱两可的名称。我们也可以在全局范围之外使用这个方法。您可以在此命名空间结构中隔离任何一组变量名。一个例子是在另一个结构中嵌入一个计数变量:出于显而易见的原因,这是不需要初始化的变量类型的最佳解决方案;其他变量类型需要一些初始化,这有点麻烦。这可能不符合某些人的口味,我不知道这是否是围棋的好习惯。我个人的意见是,与其在变量名前加上prefix_前缀,不如在它们前面加上prefix,尽管人为地引入了这样一个匿名结构。但有些人可能会有不同的看法。即使在我看来,这确实是侵入性修改,但可能是合法的。(为了更清楚地统计计数信息,这也是一种方便的暴露所有信息的方式[2])出于好奇,我快速浏览了一下目前正在开发的Go编译器和标准库,隐约发现疑似这个方法在哪里用过的。并非所有的用法都是相同的,所以我在查看源代码后提出的观点是,它似乎并不是原作者完全不能容忍或令人反感的观点。
