目录

打印变量

fmt.Printf("%T %+v %#v  %v", v , v, v, v)
  • %+v 替换为对应实参字符串表示形式

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

  • %T 打印类型

  • %s 打印字符串

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()
// 测试代码...
end := time.Now()
delta := end.Sub(start)
fmt.Printf("longCalculation took this amount of time: %s\n", delta)