• 保存上下文的数据,把数据什么的都放进去
  • 安全传递

为什么需要context

???其实

  1. package main
  2. import (
  3. "fmt"
  4. "sync"
  5. "time"
  6. )
  7. var wg sync.WaitGroup
  8. var exit bool
  9. // 全局变量方式存在的问题:
  10. // 1. 使用全局变量在跨包调用时不容易统一
  11. // 2. 如果worker中再启动goroutine,就不太好控制了。
  12. func worker() {
  13. for {
  14. fmt.Println("worker")
  15. time.Sleep(time.Second)
  16. if exit {
  17. break
  18. }
  19. }
  20. wg.Done()
  21. }
  22. func main() {
  23. wg.Add(1)
  24. go worker()
  25. time.Sleep(time.Second * 3) // sleep3秒以免程序过快退出
  26. exit = true // 修改全局变量实现子goroutine的退出
  27. wg.Wait()
  28. fmt.Println("over")
  29. }