慕尼黑8549860
2021-05-05 17:14:38
好的,我需要一個(gè)fmt.Printf()的小包裝來(lái)方便調(diào)試:1 /“在調(diào)用fmt.Fprintln時(shí)有太多參數(shù)”:func Debug (a ... interface{}) { if debug { fmt.Fprintln(out, prefix, sep, a...) }}2 /“接口類(lèi)型中不允許使用名稱(chēng)列表”:func Debug (a ... interface{}) { if debug { fmt.Fprintln(out, []interface{prefix, sep, a...}...) }}3 /有效,但感覺(jué)不對(duì):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...) }}有什么想法可以避免分配額外的內(nèi)存嗎?
3 回答

ABOUTYOU
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
我只做兩張照片:
func Debug(a ...interface{}) {
if debug {
fmt.Fprint(out, prefix, sep)
fmt.Fprintln(out, a...)
}
}
如果您認(rèn)為需要致電Fprint,可以這樣做,
func Debug(a ...interface{}) {
if debug {
fmt.Fprint(out, prefix, sep, fmt.Sprintln(a...))
}
}
無(wú)論哪種方式,構(gòu)建新切片似乎都比較簡(jiǎn)單。

青春有我
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
您也可以使用append單線:
func Debug (a ...interface{}) {
if debug {
fmt.Fprintln(out, append([]interface{}{prefix, sep}, a...}...)
}
}
- 3 回答
- 0 關(guān)注
- 226 瀏覽
添加回答
舉報(bào)
0/150
提交
取消