أسئلة وأجوبة

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

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


	for i, rune := range aString {
		... // استخدم الـ rune
	}

قد يتكوّن الـ rune من 1-4 بايتات (تسمى طول الـ rune) في ترميز UTF-8. هنا، i هو فهرس بداية بايتات الـ rune. يمكن الحصول على حجم كل rune (عدد بايتاته) لكن العملية ليست سلسة جداً. الطريقة التالية أكثر سلاسة فيما يخص أحجام الـ runes:


import "unicode/utf8"

	var str = aString
	for {
		rune, size := utf8.DecodeRuneInString(str)
		if size == 0 {
			break
		}
		str = str[size:]

		... // استخدم الـ rune
	}