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]