defer 1

What does the following program print?
package main

type Foo struct {
	v int
}

func MakeFoo(n *int) Foo {
	print(*n)
	return Foo{}
}

func (Foo) Bar(n *int) {
	print(*n)
}

func main() {
	var x = 1
	var p = &x
	defer MakeFoo(p).Bar(p) // line 19
	x = 2
	p = new(int) // line 21
	MakeFoo(p)
}

Choices:

Answer: 102

Run it on Go play.

Key points:

A similar quiz:

package main

type T int

func (t T) M(n int) T {
	print(n)
	return t
}

func main() {
	var t T
	defer t.M(1).M(2)
	t.M(3).M(4)
}

The above quiz program prints 1342.