Question #143

Author: admin
tags: Go  
package main

import "fmt"

func main() {
	fmt.Println("main 1")
	defer fmt.Println("main 2")
	foo()
	defer fmt.Println("main 3")
	fmt.Println("main 4")
}

func foo() {
	fmt.Println("foo 1")
	defer fmt.Println("foo 2")
	fmt.Println("foo 3")
	defer fmt.Println("foo 4")
}
In what order will the messages be displayed in the console?
main 1
foo 1
foo 3
foo 4
foo 2
main 3
main 4
main 2
main 1
main 2
foo 1
foo 2
foo 3
foo 4
main 3
main 4
main 1
foo 1
foo 3
foo 2
foo 4
main 3
main 2
main 4
main 1
foo 1
foo 3
main 3
foo 2
foo 4
main 2
main 4
main 1
foo 1
foo 3
main 3
foo 4
foo 2
main 4
main 2
Rate the difficulty of the question:
easyhard