Initial commit
This commit is contained in:
commit
b95ee4f1f1
3 changed files with 57 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
.vscode
|
||||||
|
stopwatch
|
3
go.mod
Normal file
3
go.mod
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module stopwatch
|
||||||
|
|
||||||
|
go 1.24.1
|
52
main.go
Normal file
52
main.go
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var start time.Time
|
||||||
|
var elapsed time.Duration
|
||||||
|
var running bool
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
if running {
|
||||||
|
elapsed = time.Since(start)
|
||||||
|
fmt.Printf("\rElapsed Time: %02d:%02d:%02d", int(elapsed.Hours()), int(elapsed.Minutes())%60, int(elapsed.Seconds())%60)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
for {
|
||||||
|
fmt.Println("> s: Start, p: Pause, r: Reset, q: Quit")
|
||||||
|
var input string
|
||||||
|
fmt.Scanln(&input)
|
||||||
|
|
||||||
|
switch input {
|
||||||
|
case "s":
|
||||||
|
if !running {
|
||||||
|
start = time.Now().Add(-elapsed)
|
||||||
|
running = true
|
||||||
|
fmt.Println("Stopwatch started.")
|
||||||
|
}
|
||||||
|
case "p":
|
||||||
|
if running {
|
||||||
|
running = false
|
||||||
|
fmt.Printf("\nPaused at: %02d:%02d:%02d\n", int(elapsed.Hours()), int(elapsed.Minutes())%60, int(elapsed.Seconds())%60)
|
||||||
|
}
|
||||||
|
case "r":
|
||||||
|
start = time.Time{}
|
||||||
|
elapsed = 0
|
||||||
|
running = false
|
||||||
|
fmt.Println("\nStopwatch reset.")
|
||||||
|
case "q":
|
||||||
|
fmt.Println("\nExiting")
|
||||||
|
return
|
||||||
|
default:
|
||||||
|
fmt.Println("\nInvalid input, please try again.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue