[フレーム]
Last Updated: February 25, 2016
·
4.145K
· mtchavez

Golang Time Function Wrapper

Wrote this quick and probably dirty wrapper for timing functions in Go. TimedReturn returns an interface{} in case a return value is needed from whatever you are wrapping.

package main

import (
 "fmt"
 "time"
)

type wrapped func()
type wrappedReturn func() interface{}

func Timed(fn wrapped, key string) {
 start := time.Now().Unix()
 fn()
 end := time.Now().Unix()
 fmt.Printf("Time: %d, Key: %s\n", end-start, key)
}

func TimedReturn(fn wrappedReturn, key string) interface{} {
 start := time.Now().Unix()
 resp := fn()
 end := time.Now().Unix()
 fmt.Printf("Time: %d, Key: %s]n", end-start, key)
 return resp
}

func main() {
 fn := func() {
 fmt.Println("Hello from wrapped function!")
 time.Sleep(time.Duration(1) * time.Second)
 }
 Timed(fn, "go.playground")

 fn2 := func() interface{} {
 fmt.Println("Hello from wrapped function with return!")
 time.Sleep(time.Duration(2) * time.Second)
 return []int{3}
 }
 returned := TimedReturn(fn2, "go.playground")
 fmt.Println("TimedReturn got:", returned.([]int))
}

AltStyle によって変換されたページ (->オリジナル) /