2010-09-20 15 views
60

से एक पूर्णांक पढ़ना मानक इनपुट से पूर्णांक इनपुट प्राप्त करने के लिए मैं fmt.Scanf फ़ंक्शन में कैसे उपयोग करूं?मानक इनपुट

यदि यह fmt.Scanf का उपयोग करके नहीं किया जा सकता है, तो एक पूर्णांक को पढ़ने का सबसे अच्छा तरीका क्या है?

उत्तर

97

http://golang.org/pkg/fmt/#Scanf

सभी जाओ में शामिल पुस्तकालयों अच्छी तरह से प्रलेखित रहे हैं।

कहा जा रहा है, मेरा मानना ​​है कि

func main() { 
    var i int 
    _, err := fmt.Scanf("%d", &i) 
} 

चाल

+0

fmt.Scanf मिनट के बारे में 1 लाख पूर्णांकों स्कैन करने के लिए ले लिया। –

+0

@robertking इसके बजाय एक bufio का उपयोग करने का प्रयास करें यह एक साधारण उदाहरण है। – cthom06

+0

चीयर्स। बुफियो तेज़ है। –

37

एक वैकल्पिक कि थोड़ा अधिक संक्षिप्त बस का उपयोग करने के fmt.Scan है हो सकता है करता है:

package main 

import "fmt" 

func main() { 
    var i int 
    fmt.Scan(&i) 
    fmt.Println("read number", i, "from stdin") 
} 

इस पर प्रतिबिंब का उपयोग करता है यह जानने के लिए तर्क का प्रकार कि इनपुट को पार्स किया जाना चाहिए।

http://golang.org/pkg/fmt/#Scan

+14

आपको त्रुटियों की जांच किए बिना ऐसा नहीं करना चाहिए;) – kyrias

3

यहाँ मेरी "फास्ट आईओ" धनात्मक पूर्णांक पढ़ने के लिए विधि है। इसे बिट्सफिफ्ट के साथ बेहतर किया जा सकता है और अग्रिम में स्मृति को बिछाया जा सकता है।

package main 

import (
    "io/ioutil" 
    "bufio" 
    "os" 
    "strconv" 
) 


func main() { 
    out := bufio.NewWriter(os.Stdout) 
    ints := getInts() 
    var T int64 
    T, ints = ints[0], ints[1:] 
    .. 
    out.WriteString(strconv.Itoa(my_num) + "\n") 
    out.Flush() 
    } 
} 

func getInts() []int64 { 
    //assumes POSITIVE INTEGERS. Check v for '-' if you have negative. 
    var buf []byte 
    buf, _ = ioutil.ReadAll(os.Stdin) 
    var ints []int64 
    num := int64(0) 
    found := false 
    for _, v := range buf { 
     if '0' <= v && v <= '9' { 
      num = 10*num + int64(v - '0') //could use bitshifting here. 
      found = true 
     } else if found { 
      ints = append(ints, num) 
      found = false 
      num = 0 
     } 
    } 
    if found { 
     ints = append(ints, num) 
     found = false 
     num = 0 
    } 
    return ints 
} 
1

Golang fmt.Scan Golang fmt.Scanf

fmt.Scan त्रुटियों अगर नहीं के बराबर नहीं यानी अगर (जो बजना scanf से अधिक आसान है) की तुलना में आसान है, लॉग & वापसी

1 सिंगल पढ़ें चर:

import (
    "fmt" 
    "log" 
) 

var i int 
if _, err := fmt.Scan(&i); err != nil { 
    log.Print(" Scan for i failed, due to ", err) 
    return 
} 

fmt.Println(i) 

2 पढ़ें कई चर:

भाग्य का

बेस्ट

उदाहरण से: http://www.sortedinf.com/?q=golang-in-1-hour

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