github.com/traefik/yaegi@v0.15.1/_test/closure14.go (about)

     1  package main
     2  
     3  import "fmt"
     4  
     5  type monkey struct {
     6  	test func() int
     7  }
     8  
     9  func getk(k int) (int, error) { return k, nil }
    10  
    11  func main() {
    12  	input := []string{"1", "2", "3"}
    13  
    14  	var monkeys []*monkey
    15  
    16  	for k := range input {
    17  		kong := monkey{}
    18  		divisor, _ := getk(k)
    19  		fmt.Print(divisor, " ")
    20  		kong.test = func() int {
    21  			return divisor
    22  		}
    23  		monkeys = append(monkeys, &kong)
    24  	}
    25  
    26  	for _, mk := range monkeys {
    27  		fmt.Print(mk.test(), " ")
    28  	}
    29  }
    30  
    31  // Output:
    32  // 0 1 2 0 1 2