Golang で []interface{} を []string に変換する
[]interface{} を []string に変換するのは簡単ではありませんこれらのタイプのメモリ レイアウトと表現が異なるため、動作が異なります。 []interface{} 配列を []string 配列にキャストするだけでは機能しません。
変換を実現するには、[]interface{} 配列内のさまざまな型を文字列値で表す方法を定義できます。 。 1 つのアプローチは、配列内の値を反復処理し、 fmt.Sprint() を使用して各値の文字列表現を取得することです。
コード例:
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) }
出力:
[zero 1 2 3.14 [4 5] {6 7}] [zero 1 2.000000 3.140000 [4 5] {6 7}]
この例では、 fmt.Sprint() は、文字列表現を取得するために各値に使用されます。ただし、より複雑な型やカスタム文字列フォーマット要件の場合は、カスタム型変換関数や追加のロジックを使用してそれらのケースを処理することを検討する必要がある場合があります。
以上がGolang で []interface{} を []string に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。