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։