Sobes.tech
Junior

Hiyeroglifler, Kiril alfabesi ve diğer sembolleri içeren bir satır nasıl okunur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Golang'da dizgeler varsayılan olarak UTF-8 formatında temsil edilir, bu da farklı alfabelerden semboller, hiyeroglifler ve Kiril alfabesi gibi karakterlerle sorunsuz çalışmayı sağlar. Bu tür dizgeleri okumak için standart fonksiyonlar ve paketler yeterlidir.

Bir dosyadan okuma:

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

func readStringFromFile(filename string) error {
	file, err := os.Open(filename)
	if err != nil {
		return fmt.Errorf("dosya açılamadı: %w", err)
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text() // Satır zaten UTF-8 formatında
		fmt.Println(line)
	}

	if err := scanner.Err(); err != nil {
		return fmt.Errorf("dosya tarama hatası: %w", err)
	}
	return nil
}

Standart girişten okuma:

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

func readStringFromStdin() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("Bir satır girin: ")
	line, _ := reader.ReadString('\n') // Satır bayt diliminde okunur ve sonra string'e dönüştürülür (UTF-8)
	fmt.Println("Girdiğiniz:", line)
}

Karakterler (rune) üzerinde yineleme:

import "fmt"

func iterateString(s string) {
	for i, r := range s { // Range, Unicode kod noktaları (rune) üzerinde yineleme yapar
		fmt.Printf("Pozisyon: %d, Rune: %c, Kod noktası: %U\n", i, r, r)
	}
}

Ana noktalar:

  • Golang dizgeleri, değiştirilemeyen bayt dizileridir.
  • Varsayılan kodlama UTF-8'dir. Bu, farklı dillerden karakterlerin doğru temsil edilmesini sağlar.
  • range kullanılarak dizge üzerinde yineleme, her seferinde bir rune (Unicode kod noktası) işler, her bayt değil.

Ek olarak:

Eğer kaynak veriler UTF-8 değilse, kodlama dönüştürmesi gerekebilir. Bu, standart kütüphane paketleri veya golang.org/x/text/encoding gibi üçüncü taraf kütüphaneler kullanılarak yapılabilir.