golang从stdin中读取一行

本文转自lifeleanote博客:http://leanote.com/blog/view/531706971a91084358000000

fmt.Scanln()不是读取一行,而是遇到换行就停止,

Scanln is similar to Scan,but stops scanning at a newline and after the final item there must be a newline or EOF.

举个例子:

vari,j,kint
fmt.Scanln(&i,&j,&k)
fmt.Println(i,k)

输入1,2 回车后程序结束. 如果换成fmt.Scan()还会让输入的.

使用stdin与reader联合起来读一行数据:

reader:=bufio.NewReader(os.Stdin)
strBytes,hasMore,err:=reader.ReadLine()

但bufio与fmt.Scan()一起用时会有错误,可能是bufio的问题,bufio多读,导致fmt.Scan()不能读

还是自己写个方法读一行:

//得到一行
funcScanLine()string{
	varcbyte
	varerrerror
	varb[]byte
	for;err==nil;{
		_,err=fmt.Scanf("%c",&c)
		
		ifc!='\n'{
			b=append(b,c)
		}else{
			break;
		}
	}
	
	returnstring(b)
}

相关文章

什么是Go的接口? 接口可以说是一种类型,可以粗略的理解为他...
1、Golang指针 在介绍Golang指针隐式间接引用前,先简单说下...
1、概述 1.1 Protocol buffers定义 Protocol buffe...
判断文件是否存在,需要用到"os"包中的两个函数: os.Stat(...
1、编译环境 OS :Loongnix-Server Linux release 8.3 CPU指...
1、概述 Golang是一种强类型语言,虽然在代码中经常看到i:=1...