progress is a package to easily generate a progress bar for your CLI application. Being written in Go, it makes sense that it is made to be safely usable by multiple goroutines.
Check out the docs at godoc.org
package main
import (
"fmt"
"os"
"time"
"github.com/jzelinskie/progress"
)
func main() {
pb := progress.New(os.Stdin, 10)
pb.Draw()
pb.DrawEvery(1 * time.Second)
for i := 0; i < 10; i++ {
pb.Increment()
time.Sleep(2 * time.Second)
}
fmt.Printf("\n")
}