目录

打印变量

fmt.Printf("%T %+v %#v  %v", v , v, v, v)
  • %+v 打印包括字段在内的对象的完整信息

  • %#v 打印包括字段和限定类型名称在内的实例的完整信息

  • %T 打印某个类型的完整说明

panic(1) // 直接爆栈,打印执行到当前行的栈信息
debug.PrintStack() // 不爆栈,打印调用栈

当您在分析和调试复杂的程序时,无数个函数在不同的代码文件中相互调用,如果这时候能够准确地知道哪个文件中的具体哪个函数正在执行,对于调试是十分有帮助的。

func mark() {
    _, file, line, _ := runtime.Caller(1)
    log.Printf("%s:%d", file, line)
}

func main() {
    mark()
    // some code
    mark()
    // some code
    mark()
}

计算执行时间

start := time.Now()
longCalculation()
end := time.Now()
delta := end.Sub(start)
fmt.Printf("longCalculation took this amount of time: %s\n", delta)