ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Golang bufio.Scanner 介绍

2022-04-01 14:31:58  阅读:147  来源: 互联网

标签:string NewScanner fmt Golang Println bufio scanner 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


标签:string,NewScanner,fmt,Golang,Println,bufio,scanner,Scanner
来源: https://www.cnblogs.com/shenyuanhaojie/p/16086770.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有