«मैंने एक घंटा दिमाग लगाया, और समाधान तीन लाइनों में»: Go में int को string में कैसे बदलें
\n\nकल्पना करें: आप Go पर माइक्रोसर्विस लिख रहे हैं, उपयोगकर्ताओं के संख्यात्मक ID प्रोसेस कर रहे हैं, और अचानक आपको एहसास होता है कि उन्हें लॉग या HTTP-रिस्पॉन्स में टेक्स्ट के साथ जोड़ना है। आप कुछ ऐसा लिखते हैं str := "User_" + id — और कंपाइलर एरर देता है: cannot use id (type int) as type string in concatenation। परिचित लगता है?
यह Go पर Stack Overflow पर सबसे लोकप्रिय प्रश्नों में से एक है — «How to convert an int value to string in Go?» — इसे सैकड़ों हज़ारों बार देखा गया है। और यह सही भी है: Go में सख्त टाइपिंग है, और केवल संख्या को स्ट्रिंग के साथ «जोड़ना» संभव नहीं है। लेकिन चिंता न करें — आज हम Go में int को string में बदलने के सभी तरीकों पर चर्चा करेंगे। आप जानेंगे कि कौन सा तरीका तेज़ है, कौन सा अधिक सुरक्षित है, और कब किसका उपयोग करना है। चलिए शुरू करते हैं!
Go int और string को सीधे जोड़ने की अनुमति क्यों नहीं देता?
\n\nJavaScript या Python के विपरीत, जहाँ "Age: " + 25 «बिना किसी बदलाव के» काम करता है, Go में स्पष्ट प्रकार रूपांतरण की आवश्यकता होती है। यह सुरक्षा के लिए किया गया है: आपको हमेशा नियंत्रित करना चाहिए कि क्या और किसमें बदल रहा है। कल्पना करें कि आप गलती से किसी संख्या को टेक्स्ट के साथ जोड़ देते हैं — अन्य भाषाओं में यह मुश्किल से पकड़ में आने वाली बग का कारण बन सकता है। Go में, कंपाइलर तुरंत कहेगा: «रुको, ऐसा नहीं कर सकते»।
इसलिए Go में int को string में बदलने के लिए स्टैंडर्ड लाइब्रेरी में विशेष फ़ंक्शन मौजूद हैं। कोई बाहरी निर्भरता नहीं — केवल शुद्ध Go।
तरीका नंबर 1: fmt.Sprintf — सार्वभौमिक «स्विस आर्मी चाकू»
\n\nसबसे सहज तरीका fmt.Sprintf फ़ंक्शन का उपयोग करना है। आप शायद इसे फ़ॉर्मेटेड आउटपुट से पहले से जानते हैं। यह किसी भी चीज़ को स्ट्रिंग में बदल सकता है — संख्याएँ, बूलियन मान, स्ट्रक्चर।
package main\n\nimport "fmt"\n\nfunc main() {\n age := 25\n str := fmt.Sprintf("Age: %d", age)\n fmt.Println(str) // आउटपुट: Age: 25\n}\n\nलाभ:
\n- \n
- बहुत लचीला: संख्या को आवश्यक प्रारूप (दशमलव, हेक्साडेसिमल, अग्रणी शून्य के साथ) के साथ सीधे स्ट्रिंग में एम्बेड किया जा सकता है। \n
- किसी भी प्रकार के लिए उपयुक्त — केवल int ही नहीं, बल्कि float, bool, struct भी। \n
नुकसान:
\n- \n
- यह अंदर से रिफ्लेक्शन का उपयोग करता है, इसलिए यह विशेष फ़ंक्शन की तुलना में धीमा काम करता है। \n
- यदि आपको केवल संख्या से स्ट्रिंग प्राप्त करनी है (बिना फ़ॉर्मेटिंग के), तो यह अनावश्यक है। \n
कब उपयोग करें: जब आपको केवल रूपांतरण ही नहीं, बल्कि आउटपुट को फ़ॉर्मेट भी करना हो — मुद्रा चिह्न जोड़ना, चौड़ाई के अनुसार संरेखित करना, HEX में बदलना।
\n\nतरीका नंबर 2: strconv.Itoa — तेज़ और सरल (int → string)
\n\nयदि आपका कार्य केवल संख्या का स्ट्रिंग प्रतिनिधित्व प्राप्त करना है, बिना किसी «सजावट» के, तो strconv.Itoa का उपयोग करें। यह int को string में बदलने के लिए एक विशेष फ़ंक्शन है। यह तेज़ी से काम करता है और कोई अनावश्यक ऑपरेशन नहीं करता।
package main\n\nimport (\n "fmt"\n "strconv"\n)\n\nfunc main() {\n number := 42\n str := strconv.Itoa(number)\n fmt.Println(str) // आउटपुट: "42"\n fmt.Printf("प्रकार: %T\\n", str) // प्रकार: string\n}\n\nलाभ:
\n- \n
- बुनियादी मामले के लिए अधिकतम प्रदर्शन। \n
- सरलता: एक फ़ंक्शन — एक क्रिया। \n
नुकसान:
\n- \n
- केवल
intप्रकार के साथ काम करता है। यदि आपके पासint64,int32आदि है, तो पहलेintमें बदलना होगा या दूसरी विधि का उपयोग करना होगा। \n - संख्या प्रणाली पर कोई नियंत्रण नहीं — केवल दशमलव प्रतिनिधित्व। \n
कब उपयोग करें: जब आपके पास सामान्य int हो और आपको केवल स्ट्रिंग प्राप्त करनी हो — यह आपकी डिफ़ॉल्ट पसंद है।
तरीका नंबर 3: strconv.FormatInt — संख्या प्रणाली पर नियंत्रण
\n\nलेकिन क्या होगा यदि आपको किसी संख्या को n