Conversion de []interface{} en []string dans Golang
Conversion de []interface{} en []string n'est pas simple fonctionnement en raison des différentes configurations de mémoire et représentations de ces types. Convertir simplement le tableau []interface{} en un tableau []string ne fonctionnera pas.
Pour réaliser la conversion, vous pouvez définir comment les différents types du tableau []interface{} doivent être représentés par des valeurs de chaîne. . Une approche consiste à parcourir les valeurs du tableau et à utiliser fmt.Sprint() pour obtenir une représentation sous forme de chaîne de chaque valeur.
Exemple de code :
package main import ( "fmt" "strconv" ) func main() { t := []interface{}{ "zero", 1, 2.0, 3.14, []int{4, 5}, struct{ X, Y int }{6, 7}, } fmt.Println(t) // Convert []interface{} to []string s := make([]string, len(t)) for i, v := range t { switch v.(type) { case string: s[i] = v.(string) case int: s[i] = strconv.Itoa(v.(int)) case float64: s[i] = strconv.FormatFloat(v.(float64), 'f', -1, 64) // customize formatting as needed case []int: s[i] = fmt.Sprintf("%v", v.([]int)) case struct{ X, Y int }: s[i] = fmt.Sprintf("%v", v.(struct{ X, Y int })) } } fmt.Println(s) }
Sortie :
[zero 1 2 3.14 [4 5] {6 7}] [zero 1 2.000000 3.140000 [4 5] {6 7}]
Dans cet exemple, fmt.Sprint() est utilisé pour chaque value pour obtenir une représentation sous forme de chaîne. Cependant, pour les types plus complexes ou les exigences de formatage de chaîne personnalisé, vous devrez peut-être envisager d'utiliser des fonctions de conversion de type personnalisées ou une logique supplémentaire pour gérer ces cas.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!