Golang扩展: ElasedTimer

1. 代码

   ① 单独放一个包里, 除了功能代码块独立, 还有就是包外只能调用包内的开发接口(大写的变量 和 接口)

   ② ElasedTimer 结构体定义小写变量, 包外不能随便访问和修改

package elapsedtimer

import (
	"fmt"
	"time"
)

type ElasedTimer struct {
	startTime time.Time
}

func (e *ElasedTimer) Start() {
	e.startTime = time.Now()
}

func (e *ElasedTimer) Restart() int64 {
	var elapsed = e.Elapsed()

	e.startTime = time.Now()

	return elapsed
}

func (e *ElasedTimer) Elapsed() int64 {
	return time.Since(e.startTime).Milliseconds()
}

func (e *ElasedTimer) MicrosecondsElapsed() int64 {
	return time.Since(e.startTime).Microseconds()
}

func (e *ElasedTimer) SecondsElapsed() float64 {
	return time.Since(e.startTime).Seconds()
}

func (e *ElasedTimer) PrintSeconds() {
	fmt.Printf("%f (s)\n", e.SecondsElapsed())
}

func (e *ElasedTimer) PrintMilliseconds() {
	fmt.Printf("%d (mill sec)\n", e.Elapsed())
}

func (e *ElasedTimer) PrintMicroseconds() {
	fmt.Printf("%d (micro sec)\n", e.MicrosecondsElapsed())
}

2. 使用

package main

import (
	"fmt"
	"./elapsedtimer"
)

func main() {
	
	var timeed = elapsedtimer.ElasedTimer{}
	timeed.Start()

	timeed.PrintSeconds()
	timeed.PrintMicroseconds()
	timeed.PrintMilliseconds()
}

猜你喜欢

转载自blog.csdn.net/halo_hsuh/article/details/105145848
今日推荐