我是 Go 的新手。我有一张地图,表明哪些作家是活跃的:
var writers map[int]bool
我想遍历地图,并使用 multiWriter() 创建一个代表所有活动作家的作家
我正在使用以下代码片段:
func setupMultiLoggers() {
var mw io.Writer
for k, v := range writers {
if v != true {
continue
}
switch k {
case 0:
if mw == nil {
mw = writer0
} else {
mw = io.MultiWriter(mw, writer0)
}
case 1:
if mw == nil {
mw = os.Stdout
} else {
mw = io.MultiWriter(mw, os.Stdout)
}
case 2:
if mw == nil {
mw = writer2
} else {
io.MultiWriter(mw, writer2)
}
default:
}
}
log.SetOutput(mw)
}
将映射的所有 3 个值初始化为 true 然后测试 writer2 时,它有时有效,有时无效(情况 2 中的代码始终执行)
如果我只是使用
log.SetOutput(io.MultiWriter(writer0, os.Stdout, writer2))
它总是按预期工作。
我似乎无法理解为什么我的原始代码不能可靠地工作。我有一种感觉有一种更干净的方式来“连接”作家
编辑:我发现了我的(愚蠢的)错误。在第三种情况下缺少对 mw 的分配。仍在寻找一种更干净的方式来“连接”作家。
慕侠2389804
慕容3067478
相关分类