J'ai une méthode qui a comme argument v ...interface{}
, Je dois ajouter cette tranche avec un string
. Voici la méthode:
func (l Log) Error(v ...interface{}) {
l.Out.Println(append([]string{" ERROR "}, v...))
}
Lorsque j'essaie avec append()
cela ne fonctionne pas:
> 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
Quelle est la bonne façon de pré-ajouter dans ce cas?
append()
ne peut ajouter que des valeurs du type correspondant au type d'élément de la tranche:
func append(slice []Type, elems ...Type) []Type
Donc, si vous avez les éléments en tant que []interface{}
, Vous devez envelopper votre string
initial dans un []interface{}
Pour pouvoir utiliser append()
:
s := "first"
rest := []interface{}{"second", 3}
all := append([]interface{}{s}, rest...)
fmt.Println(all)
Sortie (essayez-le sur le Go Playground ):
[first second 3]