以下go语言代码输出什么?A:1 3 2;B:1 2 3;C:3 1 2;D:3 2 1。
package main
import "fmt"
type temp struct{}
func (t *temp) Add(elem int) *temp {
fmt.Println(elem)
return &temp{}
}
func main() {
tt := &temp{}
defer tt.Add(1).Add(2)
tt.Add(3)
}
答案选A。defer tt.Add(1).Add(2)是链式的,Add(1)会直接执行,然后执行Add(3),最后才会执行defer的Add(2),因此选A。