Sobes.tech
Junior

Hierogliflar, kirill yozuvi va boshqa belgilardan iborat satrni qanday o'qish mumkin?

sobes.tech AI

AIdan javob

Golangda satrlar standart tarzda UTF-8 formatida taqdim etiladi, bu esa turli alfavitlardan belgilarga, jumladan, hierogliflar va kirill alifbosiga ishlashni osonlashtiradi. Bunday satrlarni o'qish uchun standart funksiyalar va paketlardan foydalanish kifoya.

Fayldan o'qish:

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

func readStringFromFile(filename string) error {
	file, err := os.Open(filename)
	if err != nil {
		return fmt.Errorf("faylni ochishda xato: %w", err)
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text() // Satr allaqachon UTF-8
		fmt.Println(line)
	}

	if err := scanner.Err(); err != nil {
		return fmt.Errorf("faylni skanerlashda xato: %w", err)
	}
	return nil
}

Standart kirishdan o'qish:

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

func readStringFromStdin() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("Satir kiriting: ")
	line, _ := reader.ReadString('\n') // Satir baytlar slice sifatida o'qiladi va keyin stringga aylantiriladi (UTF-8)
	fmt.Println("Siz kiritdingiz:", line)
}

Belgilar (rune) bo'yicha iteratsiya:

import "fmt"

func iterateString(s string) {
	for i, r := range s { // Range Unicode kod nuqtalari (rune) bo'yicha iteratsiya qiladi
		fmt.Printf("Pozitsiya: %d, Runa: %c, Kod nuqtasi: %U\n", i, r, r)
	}
}

Asosiy nuqtalar:

  • Golang satrlari o'zgarmas baytlar ketma-ketligidir.
  • Standartda UTF-8 kodlash ishlatiladi. Bu turli tillardagi belgilarni to'g'ri ifodalashni ta'minlaydi.
  • range yordamida satr bo'yicha iteratsiya har bir rune (Unicode kod nuqtasi) ni, har bir baytni emas, ishlov beradi.

Qo'shimcha:

Agar manba ma'lumotlari UTF-8 bo'lmasa, kodlashni konvertatsiya qilish uchun standart kutubxona paketlari yoki tashqi kutubxonalar, masalan, golang.org/x/text/encoding ishlatilishi mumkin.