github.com/traefik/yaegi@v0.15.1/_test/struct49.go (about) 1 package main 2 3 type S struct { 4 ts map[string][]*T 5 } 6 7 type T struct { 8 s *S 9 } 10 11 func (c *S) getT(addr string) (t *T, ok bool) { 12 cns, ok := c.ts[addr] 13 if !ok || len(cns) == 0 { 14 return nil, false 15 } 16 17 t = cns[len(cns)-1] 18 c.ts[addr] = cns[:len(cns)-1] 19 return t, true 20 } 21 22 func main() { 23 s := &S{ 24 ts: map[string][]*T{}, 25 } 26 s.ts["test"] = append(s.ts["test"], &T{s: s}) 27 28 t, ok := s.getT("test") 29 println(t != nil, ok) 30 } 31 32 // Output: 33 // true true