Junior
Hierogliflər, kiril əlifbası və digər simvolları ehtiva edən sətir necə oxunur?
sobes.tech Süni İntellekt
AI-dan cavab
Golang-da sətirlər standart olaraq UTF-8 formatında təqdim olunur, bu da müxtəlif əlifbalardan simvollarla, o cümlədən hierogliflər və kiril əlifbası ilə işləmək üçün problem yaratmır. Belə sətirləri oxumaq üçün standart funksiyalar və paketlər kifayətdir.
Fayldan oxuma:
import (
"bufio"
"fmt"
"os"
)
func readStringFromFile(filename string) error {
file, err := os.Open(filename)
if err != nil {
return fmt.Errorf("fayl açılarkən xəta: %w", err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text() // Sətir artıq UTF-8-dədir
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
return fmt.Errorf("faylın skanlanması zamanı xəta: %w", err)
}
return nil
}
Standart girişdən oxuma:
import (
"bufio"
"fmt"
"os"
)
func readStringFromStdin() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Sətir daxil edin: ")
line, _ := reader.ReadString('\n') // Sətir bayt dilimində oxunur və sonra stringə çevrilir (UTF-8)
fmt.Println("Daxil etdiniz:", line)
}
Simvolar (rune) üzərində iterasiya:
import "fmt"
func iterateString(s string) {
for i, r := range s { // Range, Unicode kod nöqtələri (rune) üzərində iterasiya edir
fmt.Printf("Vəzifə: %d, Runa: %c, Kod nöqtəsi: %U\n", i, r, r)
}
}
Əsas nöqtələr:
- Golang-də sətirlər dəyişməz bayt ardıcıllıqlarıdır.
- Standart olaraq UTF-8 kodlaması istifadə olunur. Bu, müxtəlif dillərdən olan simvolların düzgün təmsil olunmasını təmin edir.
rangeilə sətir üzərində iterasiya hər bir rune (Unicode kod nöqtəsi) ilə işləyir, hər bayt ilə deyil.
Əlavə:
Əgər mənbə məlumatları UTF-8-də deyilsə, kodlamanın çevrilməsi üçün standart kitabxana paketləri və ya xarici kitabxanalar, məsələn, golang.org/x/text/encoding, istifadə oluna bilər.