Sto provando a scrivere una funzione Map
, in modo che possa gestire tutti i tipi di array.Come scrivere func per il parametro generico in golang
// Interface to specify generic type of array.
type Iterable interface {
}
func main() {
list_1 := []int{1, 2, 3, 4}
list_2 := []uint8{'a', 'b', 'c', 'd'}
Map(list_1)
Map(list_2)
}
// This function prints the every element for
// all []types of array.
func Map(list Iterable) {
for _, value := range list {
fmt.Print(value)
}
}
Ma genera l'errore di compilazione.
19: cannot range over list (type Iterable)
L'errore è corretto perché range
richiedono matrice, puntatore a un array, slice, stringa, carta, o un canale consentendo operazioni di ricezione e qui tipo è Iterable
. Penso che il problema che sto affrontando sia la conversione del tipo di argomento Iterable
in un tipo di array. Si prega di suggerire, come potrei usare la mia funzione per gestire array generico.
sarebbe possibile conoscere il tipo e il valore dall'argomento dell'interfaccia? Sto ancora cercando di capirlo dall'esempio condiviso. –
@ subh.singh non in modo dinamico, motivo per cui è meglio lavorare con un array di un'interfaccia conosciuta, invece di un 'interface {}'. – VonC
@ subh.singh almeno non senza riflessione, un po 'come in http://play.golang.org/p/jxMFq5UYs1 menzionato nei commenti di https://www.tbray.org/ongoing/When/201x/2013/07/15/Golang-Diaries-2. – VonC