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()
}