2 回答
TA贡献1719条经验 获得超6个赞
您似乎没有作家地图,而是有整数到布尔值的地图。据推测,整数代表文件描述符。
最简单的方法可能是将其从 map[int]bool 更改为 map[io.Writer]bool,然后您可以遍历它们并将它们添加到带有 append 的切片中。
ws := make([]io.Writer, 0)
for k, v : = range(writers) {
if v != true {
continue
}
ws = append(ws, k)
}
之后,您可以通过将切片提供给 MultiWriter 调用来直接创建多编写器。
w := io.MultiWriter(ws...)
log.SetOutput(w)
( ...in a function parameter after a slice 意味着将切片扩展为函数调用的参数)
您可以在保留 map[int]bool 的同时做同样的事情,但是您需要一个类似于将 int 转换为 io.Writer 的开关
TA贡献1773条经验 获得超3个赞
例如,
var writers map[int]bool
var writer0, writer2 io.Writer
func setupMultiLoggers() {
var mw []io.Writer
for k, v := range writers {
if v == false {
continue
}
switch k {
case 0:
mw = append(mw, writer0)
case 1:
mw = append(mw, os.Stdout)
case 2:
mw = append(mw, writer2)
}
}
log.SetOutput(io.MultiWriter(mw...))
}
- 2 回答
- 0 关注
- 274 浏览
添加回答
举报