strings.Repeat în Go

Returnează un text format din același text repetat de un număr de ori.

Sintaxă
func Repeat(s string, count int) string

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 face panic; folosește max(0, latime-len(text)).
  • Aliniezi texte cu diacritice folosind len(text). len numără octeți; folosește utf8.RuneCountInString sau lățimea din fmt.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.