bufio.Writer.WriteString în Go

WriteString adaugă un text în buffer; WriteRune adaugă un singur caracter Unicode, codat UTF-8.

Sintaxă
func (b *Writer) WriteString(s string) (int, error)
func (b *Writer) WriteRune(r rune) (size int, err error)

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ște WriteRune.

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 ă, ș, €.