国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【GO】go語言入門實(shí)戰(zhàn) —— 猜數(shù)字游戲

這篇具有很好參考價(jià)值的文章主要介紹了【GO】go語言入門實(shí)戰(zhàn) —— 猜數(shù)字游戲。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

程序介紹

首先生成一個(gè)介于1~100之間的隨機(jī)數(shù),然后提示玩家輸入數(shù)字,并告訴玩家是猜對(duì)了還是猜錯(cuò)了,如果對(duì)了程序就結(jié)束,如果錯(cuò)了就提醒玩家是大了還是小了,然后玩家繼續(xù)輸入。

設(shè)置隨機(jī)數(shù)

maxNum := 100
rand.Seed(time.Now().UnixNano())  //修改隨機(jī)數(shù)種子為當(dāng)前時(shí)間戳
secretNumber := rand.Intn(maxNum)
  1. rand.Seed(seed int64):播種seed為隨機(jī)數(shù)種子
  2. func time.Now() time.Time:獲取當(dāng)前時(shí)間
  3. func (time.Time).UnixNano() int64:將Time轉(zhuǎn)成時(shí)間戳返回
  4. func rand.Intn(n int) int:設(shè)置一個(gè)隨機(jī)數(shù),隨機(jī)數(shù)的范圍為[0, n)

讀取用戶輸入

這里用的是高并發(fā)輸入,可以用簡單的Scan進(jìn)行輸入。

fmt.Print("Guess a number between 1 and", maxNum, ": ")
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
if err != nil {
    fmt.Println("An error occurred while reading input. Try again", err)
    return
input = strings.TrimSuffix(input, "\r\n") //去掉input末尾的回車換行符
    
guess, err := strconv.Atoi(input)         //將input轉(zhuǎn)換為整數(shù)
if err != nil {
    fmt.Print("Invalid input. Try again: ")
    return
fmt.Print("Your guess is ", guess, ". ")
  1. func (b *Reader) ReadString(delim byte) (string, error)ReadString一直在Reader* b中讀取,直到讀到delim,delim也會(huì)被讀進(jìn)去

  2. reader := bufio.NewReader(os.Stdin):將reader與標(biāo)準(zhǔn)輸入流Stdin關(guān)聯(lián)

    func NewReader(rd io.Reader) *ReaderNewReader返回一個(gè)具有默認(rèn)緩沖區(qū)大小新的Reader

  3. input, err := reader.ReadString('\n'):從reader中讀取,遇到'\n'就停止,把包括'\n'在內(nèi)的內(nèi)容放到字符串input中,錯(cuò)誤信息返回到err

    func (b *Reader) ReadString(delim byte) (string, error)ReadString讀取直到輸入中第一次出現(xiàn)分隔符delim,返回一個(gè)字符串,其中包含delim之前的數(shù)據(jù)并包括delim。如果ReadString在找到分隔符之前遇到錯(cuò)誤,它將返回在錯(cuò)誤之前讀取的數(shù)據(jù)和錯(cuò)誤本身(通常是io.EOF)。

  4. input = strings.TrimSuffix(input, "\n"):因?yàn)樽x入的時(shí)候把回車符\r和換行符\n也讀進(jìn)來了,所以這一步是去掉換行符。只保留input中換行符之前的內(nèi)容,不包括換行符。當(dāng)然也可以使用

    func TrimSuffix(s, suffix string) stringTrimSuffix返回s,不包含所提供的后綴字符串。如果s沒有以后綴結(jié)尾,則返回不變的s。

  5. guess, err := strconv.Atoi(input):將字符串input轉(zhuǎn)成整型存給guess

    func Atoi(s string) (int, error)Atoi相當(dāng)于轉(zhuǎn)換為int類型的ParseInt(s, 10,0)

實(shí)現(xiàn)判斷邏輯

if guess > secretNumber {
    fmt.Print("Too Big! Try again: ")
} else if guess < secretNumber {
    fmt.Print("Too Small! Try again: ")
} else {
    fmt.Println("You got it!")
    break
}

一個(gè)簡單的if分支語句,沒什么好說的。文章來源地址http://www.zghlxwxcb.cn/news/detail-612466.html

實(shí)現(xiàn)游戲循環(huán)

fmt.Println("Guess a number between 1 and ", maxNum, ": ")
reader := bufio.NewReader(os.Stdin)
for {
    input, err := reader.ReadString('\n')
    if err != nil {
        fmt.Println("An error occurred while reading input. Try again", err)
        continue
    }
    input = strings.TrimSuffix(input, "\r\n") //去掉input末尾的回車換行符
    guess, err := strconv.Atoi(input)         //將input轉(zhuǎn)換為整數(shù)
    if err != nil {
        fmt.Print("Invalid input. Try again: ")
        continue
    }
    fmt.Print("Your guess is ", guess, ". ")

    if guess > secretNumber {
        fmt.Print("Too Big! Try again: ")
    } else if guess < secretNumber {
        fmt.Print("Too Small! Try again: ")
    } else {
        fmt.Println("You got it!")
        break
    }
}
  1. 上面只完成了用戶的一次猜測,用戶輸入往后的部分改成循環(huán)即可完成,猜對(duì)記得跳出循環(huán)。
  2. 當(dāng)輸入錯(cuò)誤的時(shí)候不要直接返回了,可以改為continue繼續(xù)循環(huán)

完整代碼

package main

import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
	"strconv"
	"strings"
	"time"
)

func main() {
	// 設(shè)置隨機(jī)數(shù)
	maxNum := 100
	rand.Seed(time.Now().UnixNano()) //修改隨機(jī)數(shù)種子為當(dāng)前時(shí)間戳
	secretNumber := rand.Intn(maxNum)

	fmt.Print("Guess a number between 1 and ", maxNum, ": ")
	reader := bufio.NewReader(os.Stdin)
	for {
		input, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("An error occurred while reading input. Try again", err)
			continue
		}
		input = strings.Trim(input, "\r\n") //去掉input末尾的換行符
        
		guess, err := strconv.Atoi(input)   //將input轉(zhuǎn)換為整數(shù)
		if err != nil {
			fmt.Print("Invalid input. Try again: ")
			continue
		}
		fmt.Print("Your guess is ", guess, ". ")

		if guess > secretNumber {
			fmt.Print("Too Big! Try again: ")
		} else if guess < secretNumber {
			fmt.Print("Too Small! Try again: ")
		} else {
			fmt.Println("You got it!")
			break
		}
	}
}

到了這里,關(guān)于【GO】go語言入門實(shí)戰(zhàn) —— 猜數(shù)字游戲的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Go語言】Golang保姆級(jí)入門教程 Go初學(xué)者介紹chapter1

    【Go語言】Golang保姆級(jí)入門教程 Go初學(xué)者介紹chapter1

    Golang的學(xué)習(xí)方向 區(qū)塊鏈研發(fā)工程師: 去中心化 虛擬貨幣 金融 Go服務(wù)器端、游戲軟件工程師 : C C++ 處理日志 數(shù)據(jù)打包 文件系統(tǒng) 數(shù)據(jù)處理 很厲害 處理大并發(fā) Golang分布式、云計(jì)算軟件工程師:盛大云 cdn 京東 消息推送 分布式文件系統(tǒng) 2、Golang的應(yīng)用領(lǐng)域 區(qū)塊鏈應(yīng)用:區(qū)塊鏈

    2024年02月15日
    瀏覽(128)
  • 【Golang入門教程】Go語言變量的初始化

    【Golang入門教程】Go語言變量的初始化

    強(qiáng)烈推薦 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站: 人工智能 推薦一個(gè)個(gè)人工作,日常中比較常用的人工智能工具,無需魔法,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站: 人工智能工具 引言 在Go語言中,變量

    2024年04月17日
    瀏覽(106)
  • 【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(六)

    【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(六)

    前言 上一篇,我們介紹了image、IO、math三個(gè)庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 Net庫 (網(wǎng)絡(luò)庫,支持 Socket、HTTP、郵件、RPC、SMTP 等) 在 Go 語言的標(biāo)準(zhǔn)庫中, net 包提供了對(duì)網(wǎng)絡(luò)操作的支持,包括基本的網(wǎng)絡(luò)協(xié)議、Socket 編程、HTTP 客戶端和服務(wù)器等。 net 包包含多個(gè)子包,其

    2024年02月02日
    瀏覽(97)
  • 【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(五)

    【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(五)

    前言 上一篇,我們介紹了fmt、Go、html 三個(gè)庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 image庫 (常見圖形格式的訪問及生成) 在 Go 語言的標(biāo)準(zhǔn)庫中, image 包提供了對(duì)圖像的基本操作和處理功能。 這個(gè)包定義了 Image 接口和一些基本的圖像類型,同時(shí)也包含了一些實(shí)現(xiàn)了該接口的具

    2024年02月03日
    瀏覽(98)
  • 【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(四)

    【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(四)

    前言 上一篇,我們介紹了debug、encoding、flag三個(gè)庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 fmt庫 (格式化操作) 在 Go 語言的標(biāo)準(zhǔn)庫中, fmt 包提供了格式化輸入輸出的功能。 這個(gè)包包括了一系列函數(shù),用于將數(shù)據(jù)格式化為字符串( fmt.Sprintf )、輸出到控制臺(tái)( fmt.Print 、 fmt.Pri

    2024年02月03日
    瀏覽(98)
  • 【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(八)

    【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(八)

    強(qiáng)烈推薦 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站:人工智能 前言 上一篇,我們介紹了plugin、reflect、regexp三個(gè)庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 runtime庫 ( 運(yùn)行時(shí)接口) 在 Go 語言的標(biāo)準(zhǔn)庫中, runtime 包

    2024年01月19日
    瀏覽(93)
  • 【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(七)

    【GoLang入門教程】Go語言幾種標(biāo)準(zhǔn)庫介紹(七)

    前言 上一篇,我們介紹了Net、OS、path三個(gè)庫,這篇我們繼續(xù)介紹剩下的庫 幾種庫 plugin庫 (Go 1.7 加入的插件系統(tǒng)。支持將代碼編譯為插件,按需加載) 在 Go 語言的標(biāo)準(zhǔn)庫中, plugin 包提供了對(duì) Go 插件的支持。 插件是一種在運(yùn)行時(shí)加載并與主程序交互的機(jī)制,允許程序在不重新

    2024年01月16日
    瀏覽(99)
  • 100天精通Golang(基礎(chǔ)入門篇)——第5天: Go語言中的數(shù)據(jù)類型學(xué)習(xí)

    100天精通Golang(基礎(chǔ)入門篇)——第5天: Go語言中的數(shù)據(jù)類型學(xué)習(xí)

    ?? 博主 libin9iOak帶您 Go to Golang Language.? ?? 個(gè)人主頁——libin9iOak的博客?? ?? 《面試題大全》 文章圖文并茂??生動(dòng)形象??簡單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍》學(xué)會(huì)IDEA常用操作,工作效率翻倍~?? ?? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬請(qǐng)批

    2024年02月08日
    瀏覽(34)
  • GO語言從入門到實(shí)戰(zhàn)-Go語言簡介:歷史背景、發(fā)展現(xiàn)狀及語言特性

    一、簡述Go語言背景和發(fā)展 ? ? ? ? 1. 軟件開發(fā)的新挑戰(zhàn) 多核硬件架構(gòu) 超大規(guī)模分布式計(jì)算集群 Web 模式導(dǎo)致的前所未有的開發(fā)規(guī)模和更新速度 ? ? ? ? 2. Go的三位創(chuàng)始人 ????????Rob Pike ????????Unix 的早期開發(fā)者 ????????UTF-8 創(chuàng)始人 ????????Ken Thompson ????

    2024年02月07日
    瀏覽(28)
  • go 語言實(shí)戰(zhàn)入門案例之命令行排版詞典

    go 語言實(shí)戰(zhàn)入門案例之命令行排版詞典

    文章和代碼已經(jīng)歸檔至【Github倉庫:https://github.com/timerring/backend-tutorial 】或者公眾號(hào)【AIShareLab】回復(fù) go 也可獲取。 先看一下用到的 API ,以彩云科技提供的在線翻譯為例。請(qǐng)打開彩云翻譯的網(wǎng)頁,然后右鍵檢查打開瀏覽器的開發(fā)者工具。 此時(shí)我們點(diǎn)一下翻譯按鈕,瀏覽器會(huì)

    2024年02月14日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包