gpt4 book ai didi

go - 在不重新分配新 slice 的情况下将项目附加到可变函数包装器

转载 作者:IT王子 更新时间:2023-10-29 01:23:55 25 4
gpt4 key购买 nike

好的,我需要一个 fmt.Printf() 的小包装器来方便调试:

1/“调用 fmt.Fprintln 时参数过多”:

func Debug (a ... interface{}) {
if debug {
fmt.Fprintln(out, prefix, sep, a...)
}
}

2/“接口(interface)类型中不允许的名称列表”:

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...)
}
}

有什么办法可以避免分配额外的内存吗?

最佳答案

你也可以使用 append 来做单行代码:

func Debug (a ...interface{}) {
if debug {
fmt.Fprintln(out, append([]interface{}{prefix, sep}, a...)...)
}
}

关于go - 在不重新分配新 slice 的情况下将项目附加到可变函数包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8605446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com