Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

golang prepend a string to a slice ...interface{}

Tags:

I've a method that has as an argument v ...interface{}, I need to prepend this slice with a string. Here is the method:

func (l Log) Error(v ...interface{}) {   l.Out.Println(append([]string{" ERROR "}, v...)) } 

When I try with append() it doesn't work:

> 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 

What's the proper way to prepend in this case?

like image 653
bachr Avatar asked Dec 15 '15 15:12

bachr


1 Answers

append() can only append values of the type matching the element type of the slice:

func append(slice []Type, elems ...Type) []Type 

So if you have the elements as []interface{}, you have to wrap your initial string in a []interface{} to be able to use append():

s := "first" rest := []interface{}{"second", 3}  all := append([]interface{}{s}, rest...) fmt.Println(all) 

Output (try it on the Go Playground):

[first second 3] 
like image 166
icza Avatar answered Oct 17 '22 10:10

icza