Junior
Kā lasīt rindu, kas satur hieroglifus, kirilicu un citus simbolus?
sobes.tech AI
Atbilde no AI
Golang rindas pēc noklusējuma pārstāv UTF-8 kodējums, kas ļauj bez problēmām strādāt ar simboliem no dažādām alfabētām, ieskaitot hieroglifus un kirilicu. Lai lasītu šādas rindas, pietiek izmantot standarta funkcijas un pakotnes.
Lasīšana no faila:
import (
"bufio"
"fmt"
"os"
)
func readStringFromFile(filename string) error {
file, err := os.Open(filename)
if err != nil {
return fmt.Errorf("faila atvēršanas kļūda: %w", err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text() // rinda jau ir UTF-8
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
return fmt.Errorf("faila skenēšanas kļūda: %w", err)
}
return nil
}
Lasīšana no standarta ievades:
import (
"bufio"
"fmt"
"os"
)
func readStringFromStdin() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Ievadiet rindu: ")
line, _ := reader.ReadString('\n') // rinda tiek nolasīta baitu sēkā, pēc tam pārvērsta par stringu (UTF-8)
fmt.Println("Jūs ievadījāt:", line)
}
Simbolu (Unicode kodu punktu) iterācija:
import "fmt"
func iterateString(s string) {
for i, r := range s { // range iterē pa rūnām (Unicode kodu punktiem)
fmt.Printf("Pozīcija: %d, Rūna: %c, Koda punkts: %U\n", i, r, r)
}
}
Galvenie punkti:
- Golang rindas ir nemainīgas baitu secības.
- Tiek izmantots UTF-8 kodējums, kas nodrošina pareizu simbolu attēlojumu no dažādām valodām.
- Izmantojot
range, rindas iterācija apstrādā katru rūnu (Unicode kodu punktu), nevis katru baitu.
Papildus:
Ja sākotnējie dati nav UTF-8, var būt nepieciešama kodējuma pārveidošana, izmantojot standarta bibliotēku vai trešo pušu bibliotēkas, piemēram, golang.org/x/text/encoding.