Voglio solo scrivere del codice in questo modo:Convert [] stringa [] interfaccia {}
func (w Writer) WriteVString(strs []string) (int, error) {
return writeV(func(index int, str interface{}) (int, error) {
return w.WriteString(str.(string))
}, strs) // it doesn't work
}
func (w Writer) WriteV(bs [][]byte) (int, error) {
return writeV(func(index int, b interface{}) (int, error) {
return w.Write(b.([]byte))
}, []interface{}{bs...}) // it also can't be compiled
}
type writeFunc func(int, interface{}) (int, error)
func writeV(fn writeFunc, slice []interface{}) (n int, err error) {
var m int
for index, s := range slice {
if m, err = fn(index, s); err != nil {
break
}
n += m
)
return
}
ho pensato interface{}
può rappresentare qualsiasi tipo, in modo da []interface
può anche rappresentare qualsiasi []type
prima, ora lo so Ho torto, []type
è un tipo intero, non può essere considerato come []interface{}
.
Quindi, qualcuno può aiutarmi a far funzionare questi codici o qualsiasi altra soluzione ?.
PS: so che []byte
o string
possibile convertire in altro, ma in realtà non è la mia intenzione, può esserci qualsiasi altro tipo, piuttosto che []byte
e string
.
possibile duplicato [Conversione fetta di struct per affettare dell'interfaccia vuoto] (http://stackoverflow.com/questions/9121515/ converting-slice-of-structs-to-slice-of-empty-interface) – Volker