prefer + for string concat
benchmark shows fmt.Sprint has no advatage
Vladimir Bauer
2 years ago
| 0 | 0 | package main |
| 1 | 1 | |
| 2 | 2 | import ( |
| 3 | "fmt" | |
| 4 | 3 | "math/rand" |
| 5 | 4 | "time" |
| 6 | 5 | |
| 16 | 15 | name := "Complex Filler:" |
| 17 | 16 | bs := mpb.BarStyle() |
| 18 | 17 | bs = bs.LboundMeta(func(s string) string { |
| 19 | return fmt.Sprint("\033[34m", s, "\033[0m") // blue | |
| 18 | return "\033[34m" + s + "\033[0m" // blue | |
| 20 | 19 | }) |
| 21 | 20 | bs = bs.Filler("_").FillerMeta(func(s string) string { |
| 22 | return fmt.Sprint("\033[36m", s, "\033[0m") // cyan | |
| 21 | return "\033[36m" + s + "\033[0m" // cyan | |
| 23 | 22 | }) |
| 24 | 23 | bs = bs.Tip("⛵").TipMeta(func(s string) string { |
| 25 | return fmt.Sprint("\033[31m", s, "\033[0m") // red | |
| 24 | return "\033[31m" + s + "\033[0m" // red | |
| 26 | 25 | }) |
| 27 | 26 | bs = bs.TipOnComplete() // leave tip on complete |
| 28 | 27 | bs = bs.Padding("_").PaddingMeta(func(s string) string { |
| 29 | return fmt.Sprint("\033[36m", s, "\033[0m") // cyan | |
| 28 | return "\033[36m" + s + "\033[0m" // cyan | |
| 30 | 29 | }) |
| 31 | 30 | bs = bs.RboundMeta(func(s string) string { |
| 32 | return fmt.Sprint("\033[34m", s, "\033[0m") // blue | |
| 31 | return "\033[34m" + s + "\033[0m" // blue | |
| 33 | 32 | }) |
| 34 | 33 | bar := p.New(int64(total), bs, |
| 35 | 34 | mpb.PrependDecorators(decor.Name(name)), |
| 0 | 0 | package main |
| 1 | 1 | |
| 2 | 2 | import ( |
| 3 | "fmt" | |
| 4 | 3 | "math/rand" |
| 5 | 4 | "time" |
| 6 | 5 | |
| 16 | 15 | name := "Single Bar:" |
| 17 | 16 | bar := p.New(int64(total), |
| 18 | 17 | mpb.BarStyle().Tip(`-`, `\`, `|`, `/`).TipMeta(func(s string) string { |
| 19 | return fmt.Sprint("\033[31m", s, "\033[0m") // red | |
| 18 | return "\033[31m" + s + "\033[0m" // red | |
| 20 | 19 | }), |
| 21 | 20 | mpb.PrependDecorators(decor.Name(name)), |
| 22 | 21 | mpb.AppendDecorators(decor.Percentage()), |
| 23 | 23 | if cond { |
| 24 | 24 | s := mpb.SpinnerStyle("∙∙∙", "●∙∙", "∙●∙", "∙∙●", "∙∙∙") |
| 25 | 25 | return s.Meta(func(s string) string { |
| 26 | return fmt.Sprint("\033[31m", s, "\033[0m") // red | |
| 26 | return "\033[31m" + s + "\033[0m" // red | |
| 27 | 27 | }) |
| 28 | 28 | } |
| 29 | 29 | return mpb.BarStyle().Lbound("╢").Filler("▌").Tip("▌").Padding("░").Rbound("╟") |
| 0 | 0 | package mpb |
| 1 | 1 | |
| 2 | 2 | import ( |
| 3 | "fmt" | |
| 4 | 3 | "io" |
| 5 | 4 | "strings" |
| 6 | 5 | |
| 74 | 73 | switch s.position { |
| 75 | 74 | case positionLeft: |
| 76 | 75 | sf.position = func(frame string, padWidth int) string { |
| 77 | return fmt.Sprint(frame, strings.Repeat(" ", padWidth)) | |
| 76 | return frame + strings.Repeat(" ", padWidth) | |
| 78 | 77 | } |
| 79 | 78 | case positionRight: |
| 80 | 79 | sf.position = func(frame string, padWidth int) string { |
| 81 | return fmt.Sprint(strings.Repeat(" ", padWidth), frame) | |
| 80 | return strings.Repeat(" ", padWidth) + frame | |
| 82 | 81 | } |
| 83 | 82 | default: |
| 84 | 83 | sf.position = func(frame string, padWidth int) string { |
| 85 | return fmt.Sprint(strings.Repeat(" ", padWidth/2), frame, strings.Repeat(" ", padWidth/2+padWidth%2)) | |
| 84 | return strings.Repeat(" ", padWidth/2) + frame + strings.Repeat(" ", padWidth/2+padWidth%2) | |
| 86 | 85 | } |
| 87 | 86 | } |
| 88 | 87 | return sf |