Avatar ·

ما هو rune في Go وكيف يختلف عن byte؟

```html مرحباً بالجميع! لقد بدأت للتو في تعلم Go ووجدت نوع بيانات غريباً — rune. قرأت الوثائق لكن لم أفهم تماماً لماذا هو مطلوب. أحاول العمل مع السلاسل النصية والتكرار عبرها. كتبت هذا الكود: ```go package main import "fmt" func main() { s := "Привет, мир!" for i := 0; i < len(s); i++ { fmt.Printf("%c ", s[i]) } } ``` لكن بدلاً من الأحرف المتوقعة حصلت على فوضى: `П Ð Ð¸ в е Ñ , м и Ñ !`. كنت أتوقع رؤية كل حرف من السلسلة بالترتيب، لكن المخرجات لا تتوافق مع ما أردته. لماذا يحدث هذا؟ ثم استبدلت الحلقة بـ `for i, r := range s`، وعمل كل شيء بشكل صحيح. في الوثائق مكتوب أن `r` من النوع `rune`. من فضلكم اشرحوا: 1. ما هو `rune` بكلمات بسيطة؟ 2. ما الفرق بين `byte` و `rune`؟ 3. متى يجب استخدام `rune` ومتى `byte`؟ 4. لماذا لا تعمل الحلقة البسيطة مع الفهرسة للغة السيريلية بينما تعمل `range`؟ شكراً مسبقاً! ```