package main
import("fmt""sync/atomic""time")funcmain(){var count uint32
trigger :=func(i uint32, fn func()){for{if n := atomic.LoadUint32(&count); n == i {fn()
atomic.AddUint32(&count,1)break}
time.Sleep(time.Nanosecond)}}for i :=uint32(0); i <10; i++{gofunc(i uint32){trigger(i,func(){
fmt.Println(i)})}(i)}// 主 goroutine 最后一个运行完毕trigger(10,func(){})}