उस शीर्षक के बारे में बहुत देर तक सोचना पड़ा?... अब जब हमने उसे रास्ते से हटा दिया है, तो आइए कुछ अच्छा कोड लिखें :)
पंप ब्रेक? स्क्रीचहह....आइए आज हम जो बनाने का प्रयास करेंगे उसका थोड़ा परिचय दें। यदि शीर्षक स्पष्ट नहीं था, तो हम एक सीएलआई एप्लिकेशन का निर्माण करेंगे जो गोलांग में आपकी टाइपिंग गति की गणना करेगा - हालांकि आप अपनी पसंद की किसी भी प्रोग्रामिंग भाषा में समान तकनीकों का पालन करते हुए, सचमुच एक ही एप्लिकेशन बना सकते हैं।
अब, कोड करें ?
package main import ( "bufio" "fmt" "log" "math/rand" "os" "strings" "time" ) var sentences = []string{ "There are 60 minutes in an hour, 24 hours in a day and 7 days in a week", "Nelson Mandela is one of the most renowned freedom fighters Africa has ever produced", "Nigeria is the most populous black nation in the world", "Peter Jackson's Lord of the rings is the greatest film of all time", }
हमारी main.go फ़ाइल में, हम उन पैकेजों को आयात करते हैं जिनकी हमें अपना तर्क लिखने के लिए आवश्यकता होगी। हम वाक्यों का एक टुकड़ा भी बनाते हैं। बेझिझक और भी बहुत कुछ जोड़ सकते हैं।
// A generic helper function that randomly selects an item from a slice func Choice[T any](ts []T) T { return ts[rand.Intn(len(ts))] } // Prompts and collects user input from the terminal func Input(prompt string) (string, error) { fmt.Print(prompt) r := bufio.NewReader(os.Stdin) line, err := r.ReadString('\n') if err != nil { return "", err } return strings.Trim(line, "\n\r\t"), nil } // Compares two strings and keeps track of the characters // that match and those that don't func CompareChars(target, source string) (int, int) { var valid, invalid int // typed some of the words // resize target to length of source if len(target) > len(source) { diff := len(target) - len(source) invalid = diff target = target[:len(source)] } // typed more words than required // resize source to length of target if len(target)फिर हम कुछ फ़ंक्शन बनाते हैं जो हमारे एप्लिकेशन लॉजिक लिखते समय काम आएंगे।
func main() { fmt.Println("Welcome to Go-Speed") fmt.Println("-------------------") for { fmt.Printf("\nWould you like to continue? (y/N)\n\n") choice, err := Input(">> ") if err != nil { log.Fatalf("could not read value: %v", err) } if choice == "y" { fmt.Println("Starting Game...") timer := time.NewTimer(time.Second) fmt.Print("\nBEGIN TYPING NOW!!!\n\n") _ = > ") if err != nil { log.Fatalf("could not read value: %v", err) } elasped := timeElapsed(start, time.Now()) valid, invalid := CompareChars(sentence, response) fmt.Print("\nResult!\n") fmt.Println("-------") fmt.Printf("Correct Characters: %d\nIncorrect Characters: %d\n", valid, invalid) fmt.Printf("Accuracy: %d%%\n", accuracy(valid, len(sentence))) fmt.Printf("Precision: %d%%\n", precision(valid, invalid)) fmt.Printf("Speed: %.1fwpm\n", Speed(len(sentence), elasped)) fmt.Printf("Time Elasped: %.2fsec\n", elasped) } if choice == "N" { fmt.Println("Quiting Game...") break } if choice != "N" && choice != "y" { fmt.Println("Invalid Option") } } }हमारे मुख्य फ़ंक्शन में, हम टर्मिनल पर एक स्वागत संदेश लिखते हैं और अपने प्रोग्राम को चलाने के लिए एक अनंत लूप बनाते हैं। फिर हम प्रोग्राम को छोड़ने के विकल्प के साथ stdout - टर्मिनल - पर एक पुष्टिकरण संदेश प्रिंट करते हैं। यदि आप जारी रखना चुनते हैं, तो पहले लिखे गए वाक्यों के टुकड़े से एक वाक्य चुना जाता है और प्रारंभ समय रिकॉर्ड होने के तुरंत बाद टर्मिनल में प्रदर्शित किया जाता है। हम उपयोगकर्ता इनपुट एकत्र करते हैं और समय, गति, परिशुद्धता और सटीकता की गणना करते हैं और फिर परिणामों को टर्मिनल पर वापस प्रदर्शित करते हैं। अनंत लूप रीसेट हो जाता है और एप्लिकेशन तब तक फिर से चलता है जब तक आप प्रोग्राम से बाहर नहीं निकल जाते।
वोइला!!! हमने अभी गोलांग में अपना पहला कार्यक्रम लिखा है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3