go bufio和fmt.Scanf()用法

读取文本

package main

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

// bufio是对文件读取file.Read(buf[:])的进一步封装,先从buf中读取,没有的话,再从文件读,


func main(){
	// 只读的方式打开 
	file,err := os.Open("./buf.go")
	if err != nil{
		fmt.Println("open file failed,err:",err)
		return
	}
	defer file.Close()
	reader := bufio.NewReader(file) // 他接受的io.Reader接口,但是file实现了那个接口,也可以当参数
	for {
		line,err := reader.ReadString('\n') // 按照换行符"\n"读取到"\n"为止, 读取每一行
		if err == io.EOF {
			break
		}
		if err != nil{
			fmt.Println("read file failed ,err:",err)
			return 
		}
		fmt.Println(line)	
	}
}

读取输入

package main

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

func main(){
	var str string
	// Scanf 默认是以空格为分隔符的,要读取输入的this is a book  ,只会读取this
	fmt.Scanf("%s",&str)
	fmt.Println(str)

	reader := bufio.NewReader(os.Stdin)
	str, _ = reader.ReadString('\n')  // 以换行符结尾,能读取一行带空格的字符串
	fmt.Println("read from bufio:",str)
}
posted @ 2022-04-02 23:58  ty1539  阅读(127)  评论(0编辑  收藏  举报