यहां एक मुद्दा है जो इस समय मुझे बेकार कर रहा है। जब उपयोगकर्ता से इनपुट हो रही है, मैं फिर से प्रयास करना, जब तक वे मान्य इनपुट दर्ज उपयोगकर्ता पूछने के लिए एक पाश को रोजगार के लिए चाहते हैं:,Fmt.Scanf() में जाने के बाद Stdin कैसे फ़्लश करें?
// user_input.go
package main
import (
"fmt"
)
func main() {
fmt.Println("Please enter an integer: ")
var userI int
for {
_, err := fmt.Scanf("%d", &userI)
if err == nil {
break
}
fmt.Println("Sorry, invalid input. Please enter an integer: ")
}
fmt.Println(userI)
}
ऊपर चल रहा है उपयोगकर्ता मान्य इनपुट दर्ज करता है तो कोई समस्या नहीं:
एक पूर्णांक दर्ज करें:
बाहर निकलें कोड 0, प्रक्रिया सामान्य रूप से बाहर निकल गया।
लेकिन इसके बजाय एक स्ट्रिंग इनपुट करने का प्रयास करें?
कृपया एक पूर्णांक दर्ज करें: क्या?
क्षमा करें, अमान्य इनपुट। कृपया एक पूर्णांक दर्ज करें:
क्षमा करें, अमान्य इनपुट। कृपया एक पूर्णांक दर्ज करें:
क्षमा करें ...
आदि, और स्ट्रिंग समाप्त होने तक यह चरित्र द्वारा लूपिंग चरित्र रखता है। यहां तक कि एक वर्ण को दो बार लूप करने में भी, मुझे लगता है क्योंकि यह नई लाइन को पार करता है।
वैसे भी, गो में स्टडिन फ्लश करने का कोई तरीका होना चाहिए?
पीएस ऐसी सुविधा की अनुपस्थिति में, आप समकक्ष कार्यक्षमता प्रदान करने के लिए इसके आसपास कैसे काम करेंगे? मैं उस पर भी असफल रहा हूं ...
यह एक अच्छा कामकाज है। धन्यवाद! –
केवल 'स्कैनल' का उपयोग करें जिसे सफेद स्थान का उपभोग करने और नई लाइन तक पढ़ने के रूप में दस्तावेज किया गया है। –