hello from function pointer: 5 deferring... Thing.Print: foo arg: bar ...run as defer 3 ...run closure deferred: 4 ...run as defer 1 ...exported defer loop 3 loop 2 loop 1 loop 0 ...extracted defer func 1 Called the correct function. i = 1 bound method: foo thing inside closure: foo inside fp closure: foo 3 Thing.Print: arg: functional args 1 Thing.Print: named thing arg: functional args 2