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