web-dev-qa-db-ja.com

golangは文字列をスライスの先頭に追加します... 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
_

この場合に追加する適切な方法は何ですか?

15
bachr

append() は、スライスの要素タイプに一致するタイプの値のみを追加できます。

_func append(slice []Type, elems ...Type) []Type
_

したがって、要素が_[]interface{}_である場合、append()を使用するには、最初のstringを_[]interface{}_でラップする必要があります。

_s := "first"
rest := []interface{}{"second", 3}

all := append([]interface{}{s}, rest...)
fmt.Println(all)
_

出力( Go Playground で試してください):

_[first second 3]
_
26
icza