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.
rangekullanı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.