Ce face strings.Repeat
strings.Repeat(s, count) lipește s de count ori. Este util pentru linii de separare, bare de progres sau aliniere. Cu count = 0 obții textul gol.
Dacă count este negativ, funcția oprește programul cu panic. Verifică valoarea înainte când vine dintr-un calcul.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul de repetat. |
count |
De câte ori; trebuie să fie 0 sau pozitiv. |
Ce returnează
Textul repetat.
Exemple
Exemplul 1: Linie de separare și bară de progres
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Repeat("=", 20))
for _, procent := range []int{25, 60, 100} {
plin := procent / 10
fmt.Printf("[%s%s] %3d%%\n", strings.Repeat("█", plin), strings.Repeat("·", 10-plin), procent)
}
fmt.Println(strings.Repeat("ha", 3))
}
Rezultat
====================
[██········] 25%
[██████····] 60%
[██████████] 100%
hahaha
Exemplul 2: Grafic din stele pentru note
package main
import (
"fmt"
"strings"
)
func main() {
elevi := []string{"Ana", "Ion", "Maria"}
note := []int{10, 6, 8}
for i, e := range elevi {
fmt.Printf("%-6s %s %d\n", e, strings.Repeat("*", note[i]), note[i])
}
}
Rezultat
Ana ********** 10
Ion ****** 6
Maria ******** 8
Greșeli frecvente
- Calculezi
countși poate ieși negativ (latime - len(text)pentru un text prea lung). Repeat facepanic; foloseștemax(0, latime-len(text)). - Aliniezi texte cu diacritice folosind
len(text).lennumără octeți; foloseșteutf8.RuneCountInStringsau lățimea dinfmt.Printf("%-10s").
Comenzi înrudite
strings.Join: Lipește textele dintr-un slice într-un singur text, cu un separator între ele.strings.Builder: Construiește eficient un text din multe bucăți: adaugi cu WriteString, WriteByte, WriteRune sau Write și obții rezultatul cu String().fmt.Printf: Afișează text formatat cu %d, %s, %.2f etc.; Sprintf returnează textul, Fprintf îl scrie într-un fișier sau alt Writer.