Sobes.tech
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.
  • range ilə 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.