The struct Dog implemetments all the methods of interface Animal, why does *Dos can't be assigned to *Animal ?
type Animal interface {
    run()
}
type Dog struct {
    name string
}
func (d *Dog) run() {
    fmt.Println( d.name , " is running")
}
func main(){
    var d *Dog
    var a *Animal
    d = new(Dog)
    d.run()
    a = d   //errors here
}
Go informs the following errros:
Cannot use 'd' (type *Dog) as type *Animal in assignment
 
     
     
     
    