package main
import(
"fmt"
"time"
)
func main(){
fmt.Println("1")
defer fmt.Println("-1")
go func() {
fmt.Println("2")
defer fmt.Println("-2")
time.Sleep(9 * time.Second)
}()
time.Sleep(1 * time.Second)
fmt.Println("3")
}
出力を生成します: 1 2 3 -1 しかし、ゴルーチンの defer が呼び出されて生成されると思っていたでしょう: 1 2 3 -2 -1
私の実際のコードでは、ゴルーチンが websocket でブロックされています...シャットダウン信号を送信できると思いますが、複数のオブジェクトを待機するようなことを行う方法をまだ理解していません(実際にできる場合) goで行われます)。私は現在、延期された -2 をメインスコープに引き上げることで問題を解決しています。
私が正しくやっていない配置を延期するためのトリックはありますか?