[]interface{} in []string in Golang konvertieren
[]interface{} in []string umwandeln ist nicht einfach Betrieb aufgrund der unterschiedlichen Speicherlayouts und Darstellungen dieser Typen. Eine einfache Umwandlung des []interface{}-Arrays in ein []string-Array funktioniert nicht.
Um die Konvertierung zu erreichen, können Sie definieren, wie verschiedene Typen im []interface{}-Array durch String-Werte dargestellt werden sollen . Ein Ansatz besteht darin, die Werte im Array zu durchlaufen und mit fmt.Sprint() eine Zeichenfolgendarstellung jedes Werts zu erhalten.
Beispielcode:
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) }
Ausgabe:
[zero 1 2 3.14 [4 5] {6 7}] [zero 1 2.000000 3.140000 [4 5] {6 7}]
In diesem Beispiel wird jeweils fmt.Sprint() verwendet Wert, um eine Zeichenfolgendarstellung zu erhalten. Bei komplexeren Typen oder benutzerdefinierten Zeichenfolgenformatierungsanforderungen müssen Sie jedoch möglicherweise die Verwendung benutzerdefinierter Typkonvertierungsfunktionen oder zusätzlicher Logik in Betracht ziehen, um diese Fälle zu behandeln.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich eine []Schnittstelle{} in einen []String in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!