Go में स्ट्रिंग्स को इंटीजर्स में बदलने के कई कुशल तरीके हैं, जो विभिन्न प्रोग्रामिंग परिदृश्यों में एक सामान्य कार्य है। यह लेख तीन प्राथमिक तरीकों का पता लगाता है, उनकी ताकत और कमजोरियों को उजागर करता है ताकि आप अपनी विशिष्ट आवश्यकताओं के लिए सर्वोत्तम विधि चुन सकें।
विषयवस्तु की तालिका
1. strconv.Atoi()
strconv.Atoi()
फ़ंक्शन बेस-10 स्ट्रिंग को इंटीजर में बदलने का एक संक्षिप्त तरीका प्रदान करता है। इसकी सादगी इसे सीधे रूपांतरणों के लिए आदर्श बनाती है।
package main
import (
"fmt"
"strconv"
)
func main() {
str := "12345"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Integer:", num)
}
}
फ़ंक्शन परिवर्तित इंटीजर और एक त्रुटि मान दोनों देता है। इनपुट स्ट्रिंग एक मान्य इंटीजर नहीं होने के मामलों को संभालने के लिए हमेशा त्रुटियों की जांच करें।
2. strconv.ParseInt()
अधिक लचीले इंटीजर रूपांतरणों के लिए, strconv.ParseInt()
आपको बेस (रेडिक्स) और वांछित इंटीजर आकार (जैसे, int32, int64) निर्दिष्ट करने की अनुमति देता है।
package main
import (
"fmt"
"strconv"
)
func main() {
str := "1A"
num, err := strconv.ParseInt(str, 16, 64) // बेस 16, 64-बिट इंटीजर
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Integer:", num)
}
str2 := "101101"
num2, err := strconv.ParseInt(str2, 2, 64) // बेस 2, 64-बिट इंटीजर
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Integer:", num2)
}
}
यह उदाहरण हेक्साडेसिमल और बाइनरी स्ट्रिंग्स को परिवर्तित करना दर्शाता है। दूसरा तर्क बेस सेट करता है, और तीसरा परिणामी इंटीजर के बिट आकार को निर्दिष्ट करता है। त्रुटि हैंडलिंग महत्वपूर्ण बनी रहती है।
3. fmt.Sscanf()
fmt.Sscanf()
स्ट्रिंग पार्सिंग के लिए एक अधिक सामान्य दृष्टिकोण प्रदान करता है, जो जटिल स्ट्रिंग स्वरूपों से निपटने में उपयोगी होता है। हालाँकि, साधारण इंटीजर रूपांतरणों के लिए, यह अक्सर strconv
फ़ंक्शंस से कम कुशल होता है।
package main
import (
"fmt"
)
func main() {
str := "Value: 12345"
var num int
_, err := fmt.Sscanf(str, "Value: %d", &num)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Integer:", num)
}
}
प्रारूप स्ट्रिंग “Value: %d” निर्धारित करता है कि स्ट्रिंग को कैसे पार्स किया जाता है। %d
एक इंटीजर को दर्शाता है जिसे निकाला जाना है और num
वेरिएबल में संग्रहीत किया जाना है। यह विधि संरचित डेटा को पार्स करने के लिए शक्तिशाली है लेकिन साधारण इंटीजर रूपांतरणों के लिए जटिलता जोड़ती है।
4. विधियों की तुलना
सही विधि चुनना आपकी विशिष्ट आवश्यकताओं पर निर्भर करता है:
विधि | बेस समर्थन | बिट आकार नियंत्रण | त्रुटि हैंडलिंग | सादगी | उपयोग का मामला |
---|---|---|---|---|---|
strconv.Atoi() |
केवल बेस 10 | नहीं | हाँ | उच्च | सरल बेस-10 रूपांतरण |
strconv.ParseInt() |
चर | हाँ | हाँ | मध्यम | लचीला बेस और बिट आकार |
fmt.Sscanf() |
चर | हाँ | हाँ | निम्न | जटिल स्ट्रिंग पार्सिंग |
बेसिक बेस-10 रूपांतरणों के लिए, strconv.Atoi()
सबसे सरल और सबसे कुशल है। strconv.ParseInt()
विभिन्न बेस और इंटीजर आकारों के लिए अधिक लचीलापन प्रदान करता है। fmt.Sscanf()
अधिक जटिल स्ट्रिंग संरचनाओं से इंटीजर्स निकालने के लिए सबसे अच्छा है।