package main import ( "fmt" "io" "log" "net/http" "sync" ) func main() { m := new(sync.Mutex) c := sync.NewCond(m) ch := make(chan []byte) m.Lock() go func() { c.Signal() res, err := http.Get("https://jsonplaceholder.typicode.com/users") if err != nil { log.Fatal(err.Error()) return } defer res.Body.Close() resByte, err := io.ReadAll(res.Body) if err != nil { log.Fatal(err.Error()) return } ch <- resByte }() c.Wait() m.Unlock() fmt.Println(string(<-ch)) }