Golang:通过读取控制台的用户输入来显示数值的程序

172 阅读2分钟

在这篇博文中,在Go语言中可以通过以下方式从控制台读取输入数据

  • 使用扫描功能读取输入值
  • 从控制台读取多个输入值
  • 使用stdin流逐行读取用户输入的数据

使用扫描函数读取用户输入的例子

package main  
import (  
 "fmt"  
)  
  
func main() {  
 //reading an string  
 var name string  
 fmt.Print("What is your Name? ")  
 fmt.Scan(&name)  
 fmt.Println("Entered Name is :", name)  
  
}  

输出是

What is your Name? kiran babu  
Entered Name is : kiran  

在上面的例子中,声明了一个String变量。

fmt包有一个Scan函数,fmt包被导入到程序中。

函数Scan用于从标准输入即控制台读取用户输入的信息。

你可以查看更多关于扫描函数的信息。扫描函数存储变量的地址或指针。

你的名字是什么?提示显示在用户面前,以接受用户的输入

fmt.Scan(&name)函数读取所有以空格分隔的值,直到换行(\n或enter关键字)。每一个用空格分隔的词都存储在变量name中。

由于我们只声明了一个变量--name,文本 "kiran babu "将被视为两个以空格分隔的变量,第一个值被存储在变量name中。

最后,在控制台中打印输入的值

这样做的唯一缺点是输入的文本被保存在多个变量中,而不是整行。

下面是一个读取多个输入值的例子

package main  
import (  
 "fmt"  
)  
  
func main() {  
 //reading an multiple input string  
 var fname string  
 var lname string  
 fmt.Print("What is your Name? ")  
 fmt.Scanln(&fname, &lname)  
 fmt.Printf("Entered Name is %s %s", fname, lname)  
}  

输出是

What is your Name? Cloud Hadoop  
Entered Name is Cloud Hadoop  

下一个例子是使用stdin流逐行读取用户输入的数据

使用stdin流读取用户输入行的示例程序

Bufio包提供了从任何流中读/写的功能。
bufio包有Scanner类,可以从输入控制台逐行读取
bufio.NewScanner,它接受io.Reader来从给定的流中逐行扫描。

bufio.NewScanner(os.Stdin)从命令行控制台逐行读取关键字的数据
最后
scanner.text()存储用户文本并打印到控制台
以下是
使用stdin流从命令行控制台逐行读取输入的
数据

package main  
import (  
 "bufio"  
 "fmt"  
 "log"  
 "os"  
)  
  
func main() {  
 fmt.Println("Pleae enter text")  
 scanner := bufio.NewScanner(os.Stdin)  
 for scanner.Scan() {  
  fmt.Println("Entered Text is ", scanner.Text())  
 }  
 // Error handling  
 if err := scanner.Err(); err != nil {  
  log.Println(err)  
 }  
  
}  

输出是

What is your Name? Kiran  
Entered Name is Kiran