亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 golang 的控制臺中結束 `scanner.Scan` 循環?

如何在 golang 的控制臺中結束 `scanner.Scan` 循環?

Go
Helenr 2021-12-27 16:08:33
我希望程序采用兩行(或可能更多行)輸入。例如。1 2 3 45 6 7 8根據官方文檔,使用for scanner.Scan() {}會導致掃描無限行,直到達到 EOF 或錯誤,是否還有其他函數需要兩行輸入?
查看完整描述

3 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

使用空(零長度)行從 stdin 結束用戶輸入是傳統的做法。例如,


package main


import (

    "bufio"

    "fmt"

    "io"

    "os"

    "strings"

)


func main() {

    snr := bufio.NewScanner(os.Stdin)

    enter := "Enter a line of data:"

    for fmt.Println(enter); snr.Scan(); fmt.Println(enter) {

        line := snr.Text()

        if len(line) == 0 {

            break

        }

        fields := strings.Fields(line)

        fmt.Printf("Fields: %q\n", fields)

    }

    if err := snr.Err(); err != nil {

        if err != io.EOF {

            fmt.Fprintln(os.Stderr, err)

        }

    }

}

輸出:


$ go run data.go

Enter a line of data:

1 2 3 4

Fields: ["1" "2" "3" "4"]

Enter a line of data:

5 6 7 8

Fields: ["5" "6" "7" "8"]

Enter a line of data:


$


查看完整回答
反對 回復 2021-12-27
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

要求用戶按“CTRL + D”,從終端發出 EOF 信號,你上面的代碼應該沒有任何變化。


查看完整回答
反對 回復 2021-12-27
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

一種方法是驗證掃描儀是否已到達文件末尾。


var s scanner.Scanner


   file, _ := os.Open("file.go") // return io.Reader


   s.Init(file) // needs io.Reader


   var character rune

   character = s.Scan()


   for character != scanner.EOF {

    // here your code

   }


查看完整回答
反對 回復 2021-12-27
  • 3 回答
  • 0 關注
  • 538 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號