Junior
Чӣ гуна хати дорои hieroglifҳо, кириллӣ ва дигар нишонаҳоро хондан мумкин аст?
sobes.tech AI
Ҷавоб аз AI
Дар Golang, сатрҳо дар асоси UTF-8 намоиш дода мешаванд, ки имкон медиҳад бо рамзҳои гуногуни алфавитҳо, аз ҷумла Hierogлифҳо ва кириллӣ, бе ягон мушкил кор кардан. Барои хондани чунин сатрҳо, кифоя аст, ки функсияҳо ва пакетҳои стандартиро истифода баред.
Хондан аз файл:
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, вуҷуд дорад.