package search type writeCounter struct { Total int64 Current int64 ProgressFunction func(float32) } func (wc *writeCounter) Write(p []byte) (int, error) { n := len(p) wc.Current += int64(n) wc.flushProgress() return n, nil } func (wc *writeCounter) flushProgress() { if wc.ProgressFunction == nil || wc.Total < 100000 { return } percentage := float32(wc.Current) * 100 / float32(wc.Total) wc.ProgressFunction(percentage) }