Golang bufio.Scanner 介紹



Scanner,用於處理數據讀取的簡單任務,支持按行、按單詞等方式讀取,一般用於一些簡單的讀取場景。注意:Scanner 默認是按行讀取,可以調用 Split 方法修改讀取方式。

1. 接收標准輸入

scanner := bufio.NewScanner(os.stdin)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

2. 接收文件內容

    f, _ := os.Open("xxx.txt")
        scanner := bufio.NewScanner(f)
for scanner.Scan() {
                    // ...
        }
func printFile(filename string) {
	file, err := os.Open(filename)
	if err != nil {
		panic(err)
	}
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		fmt.Println(scanner.Text())
	}
}
func main() {
	printFile("users.txt")
}

3. 示例

// 接收用戶輸入的賬號密碼
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	Login()
}

func Login() (map[string]string, map[string]string) {
	user := map[string]string{}
	pass := map[string]string{}
	fmt.Println("歡迎光臨!")

	fmt.Println("請輸入用戶名:")
	LoginUser := bufio.NewScanner(os.Stdin)
	if LoginUser.Scan() {
		user["userName"] = LoginUser.Text()
	} else {
		user["userName"] = "輸入錯誤"
	}

	fmt.Println("請輸入登錄密碼:")
	LoginPassword := bufio.NewScanner(os.Stdin)
	if LoginPassword.Scan() {
		pass["PassWord"] = LoginPassword.Text()
	} else {
		pass["PassWord"] = "您輸入錯誤"
	}

	return user,pass
}
package main
import (
    "bufio"
    "fmt"
    "strings"
)
func main() {
    str := "A vegan woman in Australia is taking her neighbor to court because he keeps -- wait for it -- barbecuing stuff in his backyard. The smell of the meat and fish he's been cooking has apparently prevented her from enjoying her own backyard."
    scanner := bufio.NewScanner(strings.NewReader(str))
    // 設置分詞方式(按行讀取)
    scanner.Split(bufio.ScanLines)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }
    fmt.Println("-------------------")
    // 按單詞讀取
    wordScanner := bufio.NewScanner(strings.NewReader(str))
    wordScanner.Split(bufio.ScanWords)
    for wordScanner.Scan() {
        fmt.Println(wordScanner.Text())
    }
}

https://studygolang.com/articles/21198
https://blog.csdn.net/weixin_29662775/article/details/112099878
https://www.nuomiphp.com/eplan/676180.html
https://vimsky.com/examples/detail/golang-ex-bufio-Scanner-Text-method.html



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM