リクエストがキャンセルされたかどうかを確認しようとするこの簡単なコードがあります。しかし驚くべきことに、それはtrue
の代わりにfalse
をgo 1.9に印刷します。リクエストがキャンセルされたかどうかを確認する方法
これを確認する正しい方法は何ですか?
package main
import (
"context"
"log"
"net/http"
)
func main() {
r, _ := http.NewRequest("GET", "http://example.com", nil)
ctx, cancel := context.WithCancel(context.Background())
r = r.WithContext(ctx)
ch := make(chan bool)
go func() {
_, err := http.DefaultClient.Do(r)
log.Println(err == context.Canceled)
ch <- true
}()
cancel()
<-ch
}