golang 将字符串添加到切片 ...interface{}
golang prepend a string to a slice ...interface{}
我有一个方法,它有一个参数 v ...interface{}
,我需要在这个切片前面加上一个 string
。方法如下:
func (l Log) Error(v ...interface{}) {
l.Out.Println(append([]string{" ERROR "}, v...))
}
当我尝试 append()
时它不起作用:
> append("some string", v)
first argument to append must be slice; have untyped string
> append([]string{"some string"}, v)
cannot use v (type []interface {}) as type string in append
在这种情况下,前置的正确方法是什么?
append()
只能附加与切片元素类型匹配的类型的值:
func append(slice []Type, elems ...Type) []Type
因此,如果您拥有 []interface{}
等元素,则必须将初始 string
包装在 []interface{}
中才能使用 append()
:
s := "first"
rest := []interface{}{"second", 3}
all := append([]interface{}{s}, rest...)
fmt.Println(all)
输出(在 Go Playground 上尝试):
[first second 3]
我有一个方法,它有一个参数 v ...interface{}
,我需要在这个切片前面加上一个 string
。方法如下:
func (l Log) Error(v ...interface{}) {
l.Out.Println(append([]string{" ERROR "}, v...))
}
当我尝试 append()
时它不起作用:
> append("some string", v)
first argument to append must be slice; have untyped string
> append([]string{"some string"}, v)
cannot use v (type []interface {}) as type string in append
在这种情况下,前置的正确方法是什么?
append()
只能附加与切片元素类型匹配的类型的值:
func append(slice []Type, elems ...Type) []Type
因此,如果您拥有 []interface{}
等元素,则必须将初始 string
包装在 []interface{}
中才能使用 append()
:
s := "first"
rest := []interface{}{"second", 3}
all := append([]interface{}{s}, rest...)
fmt.Println(all)
输出(在 Go Playground 上尝试):
[first second 3]