39 lines
535 B
Go
39 lines
535 B
Go
package util
|
|
|
|
import "time"
|
|
|
|
type Stopwatch struct {
|
|
running bool
|
|
started time.Time
|
|
elapsed time.Duration
|
|
}
|
|
|
|
func (s *Stopwatch) Start() {
|
|
if s.running {
|
|
return
|
|
}
|
|
s.started = time.Now()
|
|
s.running = true
|
|
}
|
|
|
|
func (s *Stopwatch) Stop() {
|
|
if !s.running {
|
|
return
|
|
}
|
|
s.elapsed += time.Since(s.started)
|
|
s.running = false
|
|
}
|
|
|
|
func (s *Stopwatch) Elapsed() time.Duration {
|
|
e := s.elapsed
|
|
if s.running {
|
|
e += time.Since(s.started)
|
|
}
|
|
return e
|
|
}
|
|
|
|
func (s *Stopwatch) Reset() {
|
|
s.running = false
|
|
s.elapsed = time.Duration(0)
|
|
}
|