【发布时间】:2021-04-15 16:42:34
【问题描述】:
假设我有一个接受 Person 切片的函数:
type Person struct {
ID uuid.UUID
FirstName string
LastName string
... plus 20 more fields
}
在记录时,我可能只想记录 ID。有没有一种简单的方法可以在不创建另一种类型的情况下做到这一点?我正在使用Logrus。如果我在 JS 中,我只会使用 map 函数。示例记录器行:
logger.Debugf("personProcessor starting for people: %v", persons)
但这会导致我的日志中有很多不必要的输出。 ID 足以找到我们正在处理的人。
【问题讨论】:
-
我不认为有一个内置的,所以你必须自己写。您可以使用反射,因此它适用于所有结构类型。
-
很多时候“Go 中最简单的方法是什么”问题实际上是在问“有没有比 for 循环更短的解决方案”,答案通常是“不,或者将 for 循环放在你不想看到它的功能”。我不确定这里是不是这样,但作为一个有经验的程序员,在 for 循环中实现它可能不会有太多麻烦。
-
对,我的意思是我确信我能做到,但我不想为了让调试日志看起来更好而添加 3 行以上的代码。我不喜欢这种权衡。
标签: go