6
インターフェイスのスライスの型変換
囲碁does'tが暗黙的に変換し、なぜ私が興味[]Tに[]interface{}それは暗黙的に変換されますときTにinterface{}。私が見逃しているこの変換について重要なものはありますか? 例: func foo([]interface{}) { /* do something */ } func main() { var a []string = []string{"hello", "world"} foo(a) } go build 文句を言う (型[]文字列)を関数引数の型[]インターフェイス{}として使用することはできません そして私がそれを明示的にやろうとすると、同じこと:b := []interface{}(a)文句を言う (タイプ[]文字列)をタイプ[]インターフェース{}に変換できません したがって、私はこの変換を行う必要があるたびに(これは非常に多く現れるようです)、次のようなことをしています。 b = make([]interface{}, len(a), len(a)) for i := range a { b[i] = a[i] } これを行うより良い方法、またはこれらの変換を支援する標準ライブラリ関数はありますか?intや文字列などのリストを取得できる関数を呼び出すたびに、コードを4行追加するのはばかげているようです。
194
go
go-reflect
go-interface