2012-12-16 10 views
5

पार्स करने के लिए अभी मैं आदेश में एक स्ट्रिंग से एक पूर्णांक पार्स और फिर इसे int प्रकार कन्वर्ट करने के लिए निम्न कर रहा हूँ एक सुंदर तरीका खोज रहे हैं:एक पूर्णांक

tmpValue, _ := strconv.ParseInt(str, 10, 64) //returns int64 
finalValue = int(tmpValue) 

यह काफी वर्बोज़, और निश्चित रूप से सुंदर नहीं, क्योंकि मुझे ParseInt कॉल में रूपांतरण करने का कोई तरीका नहीं मिला है। क्या ऐसा करने का कोई अच्छा तरीका है?

उत्तर

5

ऐसा लगता है कि यह कार्य strconv.Atoi करता है जो आप चाहते हैं, सिवाय इसके कि यह int के बिट आकार के बावजूद काम करता है (आपका कोड यह मानता है कि यह 64 बिट चौड़ा है)।

3

यदि आपको कोई समस्या नहीं दिखाई देने के बाद आपको अपने कार्यक्रम में एक बार लिखना है। आप कई जगहों पर की जरूरत है आप एक सरल विशेषज्ञता आवरण लिख सकते हैं, उदाहरण के लिए:

func parseInt(s string) (int, error) { 
     i, err := strconv.ParseInt(str, 10, 32) // or 64 on 64bit tip 
     return int(i), err 
} 

मानक पुस्तकालय हर संभव सांख्यिक प्रकार और/या उनके संयोजन के लिए (फूला हुआ) एपीआई की आपूर्ति करने का लक्ष्य नहीं है।

+0

मैं 'base' तर्क है, जो नहीं किया जा रहा था को हटाने की स्वतंत्रता ले लिया। अन्यथा, +1। –

+0

ओह, सही। धन्यवाद! ;-) – zzzz

+0

असल में, "ब्लोएटेड एपीआई" के बारे में बिंदु थोड़ा सा है, क्योंकि यह विशेष मामला * * strconv.Atoi' द्वारा कवर किया गया है। –

2

त्रुटियों की जांच के लिए मत भूलना। उदाहरण के लिए,

package main 

import (
    "fmt" 
    "strconv" 
) 

func main() { 
    s := "123" 
    i, err := strconv.Atoi(s) 
    if err != nil { 
     fmt.Println(err) 
     return 
    } 
    fmt.Println(i) 
} 

आउटपुट:

123 
संबंधित मुद्दे