Aller au contenu principal

Go Tips! Convertir une interface en string

· Une minute de lecture

En Go, il est parfois nécessaire de convertir une valeur d'interface en chaîne de caractères. Par exemple, lorsqu'on veut afficher la valeur d'une interface dans un log ou dans une autre chaîne de caractères.

Problématique

Spontanément, on aimerait caster la valeur d'interface en string.

var x interface{} = "abc"
str := x.(string)

Mais cette méthode ne passe pas au travers du Linter golangci-lint. Il retourne une erreur de type errcheck et refuse de continuer. Hormis désactiver cette règle du linter, il existe une autre méthode pour convertir une valeur d'interface en chaîne de caractères.

Solution

Utilisez fmt.Sprintf pour convertir une valeur d'interface en chaîne.

var x interface{} = "abc"
str := fmt.Sprintf("%v", x)

On peut utiliser le même procédé pour obtenir une représentation sous forme de chaîne de n'importe quelle structure de données.

var x interface{} = []int{1, 2, 3}
str := fmt.Sprintf("%v", x)
fmt.Println(str) // "[1 2 3]"

Avec cette approche, on évite les erreurs du linter et on obtient bien une chaîne de caractères.