在这篇博文中,在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