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

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

在我的 Go 代碼中,為什么外部 for 循環(huán)運(yùn)行兩次

在我的 Go 代碼中,為什么外部 for 循環(huán)運(yùn)行兩次

Go
躍然一笑 2022-06-21 10:46:11
為什么這段代碼會(huì)運(yùn)行兩次外部 for 循環(huán)?這是我的代碼:package mainimport "fmt"func main() {    loops := 1    for loops > 0 {        fmt.Printf("\nNo of loops\n")        fmt.Scanf("%d", &loops)        for i := 0; i < loops; i++ {            fmt.Printf("%d ", i)        }    }}當(dāng)我運(yùn)行并輸入 1 作為循環(huán)數(shù)時(shí),輸出如下:No of loops0 No of loops0 No of loops
查看完整描述

1 回答

?
繁星點(diǎn)點(diǎn)滴滴

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

好吧,如果您查看文檔中的如何掃描它說


Scan、Fscan、Sscan 將輸入中的換行符視為空格。


我試過下面的代碼


package main


import "fmt"


func main() {

    loops := 1

    for loops > 0 {

        fmt.Printf("\nNo of loops\n")

        temp := 1

        fmt.Scanf("%d %d", &loops, &temp)

        fmt.Println("Temp:", temp)

        for i := 0; i < loops; i++ {

            fmt.Printf("\ti: %d \n", i)

        }

    }


}

我創(chuàng)建了一個(gè)臨時(shí)變量并從上面的 os.Stdin 掃描。


loops=1 的輸出是


Loop: 1

No of loops

1

Temp: 1

        i: 0

Loop: 1

No of loops

所以 temp 取出了新行,外循環(huán)按預(yù)期執(zhí)行。


沒有臨時(shí)變量,流程就像


-> loops=1 

-> outer for 

-> scanf loops (as 1) 

-> inner for loop 

-> outer for 

-> scanning will be ignored. since buffer is present in Standard Input, i.e., new line.

-> inner for loop

也就是說,我們看到兩個(gè)內(nèi)部循環(huán) for loops=1。這不僅適用于 for loops=1,而且對(duì)于任何循環(huán)值都會(huì)為您提供 2 個(gè)內(nèi)部 for 循環(huán)。


您可以在代碼中如上所述防止這種情況,也可以使用Scanln方法。


Scanln 類似于 Scan,但在換行處停止掃描,并且在最后一項(xiàng)之后必須有換行符或 EOF。


這樣的事情應(yīng)該做


fmt.Scanln(&loops)


查看完整回答
反對(duì) 回復(fù) 2022-06-21
  • 1 回答
  • 0 關(guān)注
  • 172 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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