fmt.Scanf
मानक इनपुट से पूर्णांक इनपुट प्राप्त करने के लिए मैं गो में फ़ंक्शन का उपयोग कैसे करूं ?
यदि इसका उपयोग नहीं किया जा सकता है fmt.Scanf
, तो एक पूर्णांक पढ़ने का सबसे अच्छा तरीका क्या है?
जवाबों:
http://golang.org/pkg/fmt/#Scanf
गो में शामिल सभी पुस्तकालय अच्छी तरह से प्रलेखित हैं।
कहा जा रहा है, मुझे विश्वास है
func main() {
var i int
_, err := fmt.Scanf("%d", &i)
}
उसने चाल चली
&i
और न कि i
जैसा fmt.Printf("%v", i)
?
i
में पूर्णांक मान है i
, के &i
लिए एक सूचक है i
।
एक विकल्प जो थोड़ा अधिक संक्षिप्त हो सकता है, वह है बस उपयोग करना fmt.Scan
:
package main
import "fmt"
func main() {
var i int
fmt.Scan(&i)
fmt.Println("read number", i, "from stdin")
}
यह इनपुट कैसे पार्स किया जाना चाहिए यह जानने के लिए तर्क के प्रकार पर प्रतिबिंब का उपयोग करता है।
सकारात्मक पूर्णांक पढ़ने के लिए यहां मेरी "फास्ट आईओ" विधि है। इसे पहले से बिटशिफ्ट्स और मेमोरी बिछाने के साथ बेहतर बनाया जा सकता है।
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
}
गोलंग fmt.Scan गोलंग fmt.Scanf की तुलना में सरल है (जो कि क्लैंग स्कैन की तुलना में सरल है)
यदि fmt.Scan त्रुटियां अर्थात शून्य नहीं हैं, तो लॉग इन करें और वापस लौटें
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)
import (
"fmt"
"log"
)
var i, j, k int
if _, err := fmt.Scan(&i, &j, &k); err != nil {
log.Print(" Scan for i, j & k failed, due to ", err)
return
}
fmt.Println(i, j, k)
शुभकामनाएँ
उदाहरण से: http://www.sreadinf.com/?q=golang-in-1-hour
आप fmt.Scanf
एक प्रारूप विनिर्देशक के साथ उपयोग कर सकते हैं । पूर्णांक के लिए प्रारूप निर्दिष्ट% d है। तो आप नीचे दिए गए मानक इनपुट का उपयोग कर सकते हैं।
func main() {
var someVar int
fmt.Scanf("%d", &someVar)
}
या फिर आप नीचे fmt.Scan
या fmt.Scanln
नीचे के रूप में उपयोग कर सकते हैं ।
func main() {
var someVar int
fmt.Scanln(&someVar)
}