Avatar ·

Go में रूना (rune) क्या है और यह सामान्य बाइट से कैसे अलग है?

मैंने अभी-अभी Go सीखना शुरू किया है और एक अजीब चीज़ पर ठोकर खाई — `rune` प्रकार। यह एक पूर्णांक जैसा लगता है, लेकिन फिर अलग प्रकार क्यों? मैं स्ट्रिंग्स के साथ काम करने की कोशिश कर रहा हूँ और देखा कि जब मैं इंडेक्स द्वारा एक कैरेक्टर लेता हूँ, तो मुझे अजीब संख्याएँ मिलती हैं, अक्षर नहीं। यहाँ एक उदाहरण है जिसने मुझे भ्रमित किया: ```go package main import "fmt" func main() { s := "Привет, мир!" fmt.Println(s[0]) // 208 आउटपुट करता है, 'П' नहीं fmt.Println(string(s[0])) // 'Ð' आउटपुट करता है, 'П' नहीं } ``` ऐसा क्यों होता है? मुझे उम्मीद थी कि `s[0]` मुझे स्ट्रिंग का पहला कैरेक्टर देगा। लेकिन इसके बजाय मुझे कुछ बकवास मिलता है। मैंने पढ़ा कि `rune` का उपयोग करना चाहिए, लेकिन समझ नहीं आता कैसे। मैंने ऐसा प्रयास किया: ```go r := []rune(s) fmt.Println(string(r[0])) // अब 'П' आउटपुट करता है ``` यह काम करता है, लेकिन मुझे समझ नहीं आता क्यों। `rune` वास्तव में क्या है? क्या यह सिर्फ `int32` है? या यह कुछ और है? इस प्रकार की आवश्यकता क्यों है अगर हम बाइट्स से काम चला सकते हैं? कृपया समझाएँ कि Go में स्ट्रिंग्स, बाइट्स और रून्स कैसे काम करते हैं।