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