Ce face bufio.Writer.WriteString
WriteString pune textul în buffer-ul Writer-ului și returnează numărul de octeți. WriteRune codează caracterul în UTF-8 (1–4 octeți) și îl adaugă; returnează câți octeți a ocupat. Există și WriteByte pentru un singur octet.
Datele ajung la destinație doar când buffer-ul se umple sau la Flush.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul de adăugat. |
r |
Caracterul de adăugat (la WriteRune). |
Ce returnează
Numărul de octeți adăugați și eroarea.
Exemple
Exemplul 1: Text și caractere
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
w := bufio.NewWriter(os.Stdout)
defer w.Flush()
n1, _ := w.WriteString("Preț: 50")
n2, _ := w.WriteRune('€')
w.WriteRune('\n')
n3, _ := w.WriteRune('ș')
w.WriteRune('\n')
fmt.Fprintln(w, "octeți:", n1, n2, n3)
}
Rezultat
Preț: 50€
ș
octeți: 9 3 2
Exemplul 2: Un chenar desenat cu caractere
package main
import (
"bufio"
"os"
"strings"
)
func main() {
w := bufio.NewWriter(os.Stdout)
defer w.Flush()
text := "Bun venit în Sibiu!"
latime := len([]rune(text)) + 2
w.WriteRune('┌')
w.WriteString(strings.Repeat("─", latime))
w.WriteString("┐\n│ ")
w.WriteString(text)
w.WriteString(" │\n└")
w.WriteString(strings.Repeat("─", latime))
w.WriteString("┘\n")
}
Rezultat
┌─────────────────────┐
│ Bun venit în Sibiu! │
└─────────────────────┘
Greșeli frecvente
- Folosești
WriteByte(byte('ș'))pentru diacritice. Caracterul nu încape într-un octet; foloseșteWriteRune.
Comenzi înrudite
bufio.NewWriter: Învelește un io.Writer într-un bufio.Writer, care strânge scrierile mici într-un buffer și le trimite în blocuri.bufio.Writer.Flush: Trimite la destinație toate datele rămase în buffer-ul unui bufio.Writer.io.WriteString: Scrie un text în orice io.Writer, folosind metoda WriteString a acestuia dacă există.bufio.Reader.ReadRune: Citește un singur caracter Unicode (rune), decodând corect literele de mai mulți octeți ca ă, ș, €.