Go言語のforループとScanfについて質問があります。
以下のソースコードでは、
- fmt.Scanfで標準入力を受けとり**input**にいれる
- **count**をインクリメントする
- **inputとcount**を出力する
- 1~3を10回繰り返す
- ループを抜ける
という処理を想定してかいたのですが、
- fmt.Scanfで標準入力を受けとり**input**にいれる
- **count**をインクリメントする
- **inputとcount**を出力する
- 1をとばす
- **count**をインクリメントする
- input(未入力のまま)と**count**を出力する
- 1~6を5回繰り返す
- ループを抜ける
という処理をしているようなのです。
Scanfは一回一回標準入力を受けとるものではないのでしょうか。
また、想定していた動きをさせるにはどう修正すれば良いでしょうか。
まだGo言語をはじめたばかりなのですが、
よろしくお願いいたします。
###ソースコード
go
1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 count := 0 9 for { 10 var input int 11 fmt.Scanf("%v", &input) 12 count++ 13 fmt.Printf("input : %v\n", input) 14 fmt.Printf("count : %v\n", count) 15 if count == 10 { 16 break 17 } 18 } 19}
###処理結果
1 input : 1 count : 1 input : 0 count : 2 2 input : 2 count : 3 input : 0 count : 4 3 input : 3 count : 5 input : 0 count : 6 4 input : 4 count : 7 input : 0 count : 8 5 input : 5 count : 9 input : 0 count : 10
###実行環境
OS : Windows 10 Home
バージョン : 1903
ビルド : 18362.778
Go : go1.14.2 windows/amd64
エディタ : Visual Studio Code(1.44.2)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/18 06:30
2020/04/18 08:28