普通并发:
func test() {
defer fmt.Println("我在test()里面的defer")//在函数退出前执行
fmt.Println("我在test()里面")
}
func main() {
go func() {
fmt.Println("我在main(()里面,在test()之前")
test()
fmt.Println("我在main(()里面,在test()之后")
}()
for true {
}
}
如果在
func test() {
defer fmt.Println(“我在test()里面的defer”)//在函数退出前执行
return
fmt.Println(“我在test()里面”)
}
加上return
return的意思是终止此函数,那么在终止前又有一个defer所以才会打印“"我在test()里面的defer”,那么“我在test()里面”自然不会被执行
func test() {
defer fmt.Println("我在test()里面的defer")//在函数退出前执行
runtime.goexit()//退出所在子协程
fmt.Println("我在test()里面")
}
func main() {
go func() {
fmt.Println("我在main(()里面,在test()之前")
test()
fmt.Println("我在main(()里面,在test()之后")
}()
for true {
}
}