github.com/HaHadaxigua/yaegi@v1.0.1/_test/issue-1315.go (about)

     1  package main
     2  
     3  type Intf interface {
     4  	M()
     5  }
     6  
     7  type T struct {
     8  	s string
     9  }
    10  
    11  func (t *T) M() { println("in M") }
    12  
    13  func f(i interface{}) {
    14  	switch j := i.(type) {
    15  	case Intf:
    16  		j.M()
    17  	default:
    18  		println("default")
    19  	}
    20  }
    21  
    22  func main() {
    23  	var i Intf
    24  	var k interface{} = 1
    25  	i = &T{"hello"}
    26  	f(i)
    27  	f(k)
    28  }
    29  
    30  // Output:
    31  // in M
    32  // default