Elegant Time

Posted on: 25 December, 2017
By Sab

I often write debug logs with this below piece of code to print how much time a function took

func upload() {
	start := time.Now()
	// processing
	fmt.Println("uploaded in %s secs", time.Now().Sub(start))

thats two lines, plus I should always remember to write that last line of code, With Golang’s deferred function it just one line

func totalTime(t time.Time) {

func main() {
	defer totalTime(time.Now())
	fmt.Println("Hello, playground")

Here we use the fact of deferred function that arguments are evaluated first and the function is called after return of callee.