defer report(e) против defer-замыкания

Что выведетMiddleбесплатно05-t013

Переменная-ошибка после регистрации двух defer переназначается. Один defer вызывает report(e) напрямую, другой — через замыкание. Что выведет программа?

main.gogo
1package main2 3import "fmt"4 5func main() {6	var e error7	e = nil8	defer func() { report(e) }()9	defer report(e)10	e = fmt.Errorf("boom")11}12 13func report(e error) {14	var text string15	if e == nil {16		text = "nil"17	} else {18		text = e.Error()19	}20	fmt.Println(text)21}
Чем закончится программа?
Сначала подумай без запуска — на собесе компилятора не будет.