错误示例
type chanData struct {result stringerror error
}func Biz1() {t := time.NewTimer(time.Second * 10)ctx := context.Background()ch := make(chan chanData)go doChan(ctx, ch)fmt.Println("Biz1 begin")for {select {case <-t.C:fmt.Println("Biz1 to time")returncase data := <-ch:fmt.Println("Biz1 data", jsonx.ToString(data.result), "Biz1 err", data.error.Error())return}}
}type RecoverHook func()func Recover(ctx context.Context, method string, hooks ...RecoverHook) {if err := recover(); err != nil {const size = 64 << 10buf := make([]byte, size)buf = buf[:runtime.Stack(buf, false)]fmt.Printf("panic err: %v\n%v\n end!!!\n", err, string(buf))for