Git does't örtük dönüştürme neden merak ediyorum []T
için []interface{}
dolaylı dönüştürür zaman T
için interface{}
. Kaçırdığım bu dönüşümle ilgili önemsiz olmayan bir şey var mı?
Misal:
func foo([]interface{}) { /* do something */ }
func main() {
var a []string = []string{"hello", "world"}
foo(a)
}
go build
şikayet
işlev bağımsız değişkeninde tür [] arabirimi {} olarak bir (type [] dizesi) kullanılamaz
Ve açıkça yapmaya çalışırsam, aynı şey: b := []interface{}(a)
şikayet ediyor
(type [] dizesi) [] arayüzüne {} dönüştürülemiyor
Yani (bu çok geliyor gibi görünüyor) bu dönüşüm yapmak her zaman, ben böyle bir şey yapıyorum:
b = make([]interface{}, len(a), len(a))
for i := range a {
b[i] = a[i]
}
Bunu yapmanın daha iyi bir yolu veya bu dönüşümlere yardımcı olacak standart kitaplık işlevleri var mı? Örneğin, ints veya dizelerin bir listesini alabilen bir işlevi çağırmak istediğinizde her zaman 4 ekstra kod satırı yazmak aptalca görünüyor.