好的,我需要一个fmt.Printf()的小包装来方便调试:1 /“在调用fmt.Fprintln时有太多参数”:func Debug (a ... interface{}) { if debug { fmt.Fprintln(out, prefix, sep, a...) }}2 /“接口类型中不允许使用名称列表”:func Debug (a ... interface{}) { if debug { fmt.Fprintln(out, []interface{prefix, sep, a...}...) }}3 /有效,但感觉不对:func Debug (a ... interface{}) { if debug { sl := make ([]interface{}, len(a) + 2) sl[0] = prefix sl[1] = sep for i, v := range a { sl[2+i] = v } fmt.Fprintln(out, sl...) }}有什么想法可以避免分配额外的内存吗?
3 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
我只做两张照片:
func Debug(a ...interface{}) {
if debug {
fmt.Fprint(out, prefix, sep)
fmt.Fprintln(out, a...)
}
}
如果您认为需要致电Fprint,可以这样做,
func Debug(a ...interface{}) {
if debug {
fmt.Fprint(out, prefix, sep, fmt.Sprintln(a...))
}
}
无论哪种方式,构建新切片似乎都比较简单。
青春有我
TA贡献1784条经验 获得超8个赞
您也可以使用append单线:
func Debug (a ...interface{}) {
if debug {
fmt.Fprintln(out, append([]interface{}{prefix, sep}, a...}...)
}
}
- 3 回答
- 0 关注
- 200 浏览
添加回答
举报
0/150
提交
取消