囲碁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行追加するのはばかげているようです。