第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

“已聲明但未使用”是因?yàn)?Go 編譯器無(wú)法考慮循環(huán)?

“已聲明但未使用”是因?yàn)?Go 編譯器無(wú)法考慮循環(huán)?

Go
紅顏莎娜 2021-12-07 16:00:04
  糟糕的標(biāo)題,但我不知道如何在字符限制內(nèi)描述它。作為學(xué)習(xí)練習(xí),我正在嘗試編寫(xiě)一個(gè)模擬彩票抽獎(jiǎng)的小圍棋程序。它抽取六個(gè)隨機(jī)數(shù)作為獲勝集,然后不斷抽取隨機(jī)整數(shù)的隨機(jī)數(shù)組,直到再次獲得該集。首先,我編寫(xiě)了一個(gè)函數(shù),它接受一個(gè)通道并無(wú)限循環(huán)“向通道添加 6 個(gè)隨機(jī)整數(shù)的數(shù)組”:func draw(ch chan<- [6]int) {    generator := rand.New(rand.NewSource(time.Now().UnixNano()))    for {        ch <- [6]int{            generator.Intn(100),            generator.Intn(100),            generator.Intn(100),            generator.Intn(100),            generator.Intn(100),            generator.Intn(100),        }    }}然后在main()我指定兩個(gè) OS 線(xiàn)程中,創(chuàng)建一個(gè)可以容納 250 個(gè) 6 個(gè)整數(shù)數(shù)組的通道,并draw()在 goroutine 中啟動(dòng)我的函數(shù)。runtime.GOMAXPROCS(2)ch := make(chan [6]int, 250)go draw(ch)接下來(lái),我[4 8 15 16 23 42]從頻道中取出一個(gè)獲勝的集合(例如),然后是一個(gè)“當(dāng)前”集合,意思是最近的平局。我將 game_played 計(jì)數(shù)器設(shè)置為 1:winning := <- chcurrent := <- chgames_played := 1這是棘手的一點(diǎn)。在無(wú)限循環(huán)中,我檢查當(dāng)前平局是否等于獲勝平局。如果是,我打印玩的游戲數(shù)量,并從循環(huán)中中斷。如果不是,我設(shè)置current為新的平局,并增加計(jì)數(shù)器。然后循環(huán)應(yīng)該if winning == current...一遍又一遍地運(yùn)行檢查,直到匹配為止。for {    if winning == current {        fmt.Println(games_played)        break    } else {        current := <- ch        games_played += 1    }}問(wèn)題是:倒數(shù)第四行,current := <- ch拋出編譯器錯(cuò)誤,“當(dāng)前已聲明但未使用”。我想說(shuō)“是的,我知道它在向下讀取之后不再使用,但它是在循環(huán)中聲明的,所以它的值在下一次迭代中很重要?!?但我不知道怎么做,或者我是否做了一些愚蠢的事情。顯然,我對(duì) Go 一無(wú)所知。但對(duì)我來(lái)說(shuō),仔細(xì)想想,邏輯是合理的。我搞砸了什么嗎?(注意:我知道抽簽[1 2 3]不等于的疏忽,暫時(shí)[2 3 1]忽略這一點(diǎn)。)
查看完整描述

1 回答

?
侃侃無(wú)極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

第二個(gè)電流在if范圍內(nèi)。替換current := <- ch為current = <- ch(無(wú)冒號(hào))。使用時(shí),:=您current在嵌套范圍內(nèi)定義一個(gè)新變量。


if winning == current {

    fmt.Println(games_played)

    break

} else {

    current := <- ch

    games_played += 1

}

相當(dāng)于:


if winning == current {

    fmt.Println(games_played)

    break

} else {

    var current int[6] // you don't want this, as it shadows your

                       // current form the outher scope

    current = <- ch // you want only this guy

    games_played += 1

}


查看完整回答
反對(duì) 回復(fù) 2021-12-07
  • 1 回答
  • 0 關(guān)注
  • 204 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)