أسئلة وأجوبة

كيف تكرّر على عناصر البايتات في نص؟

في Go، يُفترض أن النصوص مُرمَّزة بترميز UTF-8. ستحصل حلقة for-range على نص على الـ runes (نقاط شيفرة Unicode) في النص. فكيف تحصل على عناصر البايتات في نص؟ هناك طريقتان لتحقيق ذلك. أداء هاتين الطريقتين متكافئ جوهرياً.

الطريقة 1: استخدام حلقة for;;


	for i := 0; i < len(aString); i++ {
		byteElement := aString[i]
		... // استخدم byteElement
	}

الطريقة 2: استخدام حلقة for-range

يُجري مصرِّف Go الرسمي تحسينات خاصة بحيث لا يحدث تخصيص ذاكرة ولا تكرار للبايتات في التحويل []byte(aString) إذا ثبت أن شريحة البايتات الناتجة (من التحويل) لن تُستخدم بالتزامن. مثلاً، التحويل الذي يلي الكلمة المفتاحية range لا يخصص البايتات الأساسية ولا يكرّرها.


	for _, byteElement := range []byte(aString) {
		... // استخدم byteElement
	}