下面代码段输出什么?

type Person struct {
    age int
}

func main() {
    person := &Person{28}

    // 1. 
    defer fmt.Println(person.age)

    // 2.
    defer func(p *Person) {
        fmt.Println(p.age)
    }(person)  

    // 3.
    defer func() {
        fmt.Println(person.age)
    }()

    person.age = 29
}
29 29 28 defer是先进后出的 因此会运行 // 3 的内容 输出29 后运行 //2 这里传入的是指针类型,因此会数据也是29 最后运行//1 因为入参的值在运行defer就已经定下来了 因此输出28