Sobes.tech
Junior

Ինչպես կարդալ տողը, որը պարունակում է հիերոգլիֆներ, կիրլիք և այլ նշաններ?

sobes.tech AI

Պատասխան AI-ից

Golang-ում տողերը ըստ նախնական կարգի ներկայացված են UTF-8-ում, ինչը թույլ է տալիս առանց խնդիրների աշխատել տարբեր այբուբեններից նշանների հետ, ներառյալ հիերոգլիֆները և կիրլիցը: Այդպիսի տողեր կարդալու համար բավարար է օգտագործել ստանդարտ ֆունկցիաներ և փաթեթներ:

Ֆայլից կարդալ:

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

func readStringFromFile(filename string) error {
	file, err := os.Open(filename)
	if err != nil {
		return fmt.Errorf("ֆայլը բացելիս սխալ: %w", err)
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text() // Գիծը արդեն UTF-8 է
		fmt.Println(line)
	}

	if err := scanner.Err(); err != nil {
		return fmt.Errorf("ֆայլի սկանավորման սխալ: %w", err)
	}
	return nil
}

Ստանդարտ մուտքից կարդալ:

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

func readStringFromStdin() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("Մուտքագրեք տող: ")
	line, _ := reader.ReadString('\n') // Տողը կարդում է բայթային սլայս և այնուհետև փոխարկում է string (UTF-8)
	fmt.Println("Դուք մուտքագրեցիք:", line)
}

Անհատականացում՝ անցում նշանների (ռունների) վրա:

import "fmt"

func iterateString(s string) {
	for i, r := range s { // Range ռունների (Unicode կոդային կետերի) վրա
		fmt.Printf("Պոզիցիա: %d, Ռունա: %c, Կոդային կետ: %U\n", i, r, r)
	}
}

Հիմնական կետեր՝

  • Golang-ի տողերը անփոփոխ սլայսներ են բայթների:
  • Դեֆոլտով օգտագործվում է UTF-8 կոդավորումը, որը ապահովում է տարբեր լեզուների նշանների ճիշտ ներկայացում:
  • Տողերի վրա range օգտագործելով, այն մշակվում է յուրաքանչյուր ռունա (Unicode կոդային կետ), ոչ թե յուրաքանչյուր բայթ:

Ավելին՝

Եթե աղբյուրային տվյալները չեն UTF-8, անհրաժեշտ է կոդավորումը փոխարկել՝ օգտագործելով ստանդարտ գրադարանի կամ արտաքին գրադարանների փաթեթներ, օրինակ՝ golang.org/x/text/encoding։