其他

  1. go func() {
  2. sigs := make(chan os.Signal, 1)
  3. signal.Notify(sigs, syscall.SIGQUIT)
  4. buf := make([]byte, 1<<20)
  5. for {
  6. <-sigs
  7. stacklen := runtime.Stack(buf, true)
  8. log.Printf("=== received SIGQUIT ===\n*** goroutine dump...\n%s\n*** end\n" , buf[:stacklen])
  9. }
  10. }()
  1. var hits struct {
  2. sync.Mutex
  3. n int
  4. }
  5. hits.Lock()
  6. hits.n++
  7. hits.Unlock()
  • httputil.DumpRequest 是非常有用的东西,不要自己创建
  • 获得调用堆栈,我们可以使用 runtime.Caller
  • 要 marshal 任意的 JSON, 你可以 marshal 为 map[string]interface{}{}
  • 配置你的 CDPATH 以便你能在任何目录执行 cd github.com/golang/go

    • 添加这一行代码到 bashrc(或者其他类似的) export CDPATH=$CDPATH:$GOPATH/src
  • 从一个 slice 生成简单的随机元素

    • []string{"one", "two", "three"}[rand.Intn(3)]