Sobes.tech
Junior

Come leggere una riga che contiene geroglifici, cirillico e altri simboli?

sobes.tech AI

Risposta dell'AI

In Golang, le string sono rappresentate di default in UTF-8, il che permette di lavorare senza problemi con caratteri di diversi alfabeti, inclusi geroglifici e cirillico. Per leggere tali stringhe, basta usare funzioni e pacchetti standard.

Lettura da file:

import (
	"bufio"
	"fmt"
	"os"
)

func readStringFromFile(filename string) error {
	file, err := os.Open(filename)
	if err != nil {
		return fmt.Errorf("errore apertura file: %w", err)
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text() // La stringa è già in UTF-8
		fmt.Println(line)
	}

	if err := scanner.Err(); err != nil {
		return fmt.Errorf("errore scansione file: %w", err)
	}
	return nil
}

Lettura da input standard:

import (
	"bufio"
	"fmt"
	"os"
)

func readStringFromStdin() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("Inserisci una stringa: ")
	line, _ := reader.ReadString('\n') // La stringa viene letta in uno slice di byte e poi convertita in stringa (UTF-8)
	fmt.Println("Hai inserito:", line)
}

Iterazione sui caratteri (rune):

import "fmt"

func iterateString(s string) {
	for i, r := range s { // Range itera sui rune (punti di codice Unicode)
		fmt.Printf("Posizione: %d, Runa: %c, Punto di codice: %U\n", i, r, r)
	}
}

Punti principali:

  • Le stringhe in Golang sono sequenze immutabili di byte.
  • Per impostazione predefinita, si utilizza la codifica UTF-8. Questo garantisce una rappresentazione corretta dei caratteri di diverse lingue.
  • L'iterazione su una stringa con range elabora ogni rune (punto di codice Unicode), non ogni byte.

In aggiunta:

Se i dati di origine non sono in UTF-8, potrebbe essere necessario convertire la codifica usando pacchetti della libreria standard o librerie esterne, come golang.org/x/text/encoding.