github.com/traefik/yaegi@v0.15.1/_test/issue-1189.go (about) 1 package main 2 3 type I interface { 4 Foo() int 5 } 6 7 type S1 struct { 8 i int 9 } 10 11 func (s S1) Foo() int { return s.i } 12 13 type S2 struct{} 14 15 func (s *S2) Foo() int { return 42 } 16 17 func main() { 18 Is := map[string]I{ 19 "foo": S1{21}, 20 "bar": &S2{}, 21 } 22 n := 0 23 for _, s := range Is { 24 n += s.Foo() 25 } 26 bar := "bar" 27 println(n, Is["foo"].Foo(), Is[bar].Foo()) 28 } 29 30 // Output: 31 // 63 21 42