sto giocando con il tipo di affermazione utilizzando il seguente codice fittizio, e ho ottenuto l'errore:Golang: non si può digitare interruttore sul valore diverso da interfaccia
cannot type switch on non-interface value
Qualcuno sa che cosa significa?
package main
import "fmt"
import "strconv"
type Stringer interface {
String() string
}
type Number struct {
v int
}
func (number *Number) String() string {
return strconv.Itoa(number.v)
}
func main() {
n := &Number{1}
switch v := n.(type) {
case Stringer:
fmt.Println("Stringer:", v)
default:
fmt.Println("Unknown")
}
}
http://play.golang.org/p/Ti4FG0m1mc
ma quale sarebbe il punto di fare l'asserzione di tipo su un tipo noto? – newacct
@newacct Sì, nel codice di produzione sicuramente non si digita l'asserzione se il tipo è già noto. Il punto di questo esercizio è capire l'asserzione di tipo. – Mingyu