scanner 获取控制台信息_Go 读取控制台输入

这是一个快速简单的教程,主要内容是如何在 Go 程序中读取控制台的输入。在这个教程中,我们将创建一个非常简单的脚本,这个脚本可以读取用户的输入并打印出来。

读取整个句子

我们使用 while 循环,在 Go 语言中相当于没有任何参数的 for 循环,这样就可以让程序一直运行了。在这个例子中,每次输入一个字符串并按下 enter 键,我们会通过 \n 这个关键字符来区分字符串,如果你想对比刚才输入的字符串,我们还需要调用 replace 方法来去除掉 \n 然后再进行比较。如果你想让这个程序在 Windows 系统下运行,那么你必须将代码的 text 替换为 text = strings.Replace(text,"\r\n","",-1) 因为 Windowss 系统使用的行结束符和 unix 系统是不同的。

package main

import (

"bufio"

"fmt"

"os"

"strings"

)

func main() {

reader := bufio.NewReader(os.Stdin)

fmt.Println("Simple Shell")

fmt.Println("---------------------")

for {

fmt.Print("-> ")

text, _ := reader.ReadString('\n')

// convert CRLF to LF

text = strings.Replace(text, "\n", "", -1)

if strings.Compare("hi", text) == 0 {

fmt.Println("hello, Yourself")

}

}

}

在这个例子中我们可以发现,无论什么时候我们输入 "hi",我们的 strings.Compare() 方法都将会返回 0,并且向我们打印出 hello。

读取一个 UTF-8 编码的 Unicode 字符

如果你想从命令行中简单地读取一个 unicode 字符,我建议你使用 bufio.ReadRune(),就像这样:

reader := bufio.NewReader(os.Stdin)

char, _, err := reader.ReadRune()

if err != nil {

fmt.Println(err)

}

// 打印输出 unicode 值为:A -> 65, a -> 97

fmt.Println(char)

switch char {

case 'A':

fmt.Println("A Key Pressed")

break

case 'a':

fmt.Println("a Key Pressed")

break

}

使用 Bufio 的 Scanner 方法

第三种从控制台读取的权威方法是通过创建一个 scanner 对象 , 然后通过 os.Stdin 来完成,就像我们刚才创建一个 readers 做的,这次我们使用 scanner.Scan 去从控制台读取内容:

func scanner() {

scanner := bufio.NewScanner(os.Stdin)

for scanner.Scan() {

fmt.Println(scanner.Text())

}

}

无论你什么时候输入内容,上面的代码都将不断地在控制台扫描输入并打印出来。

结论

正如你所看到的,这里有很多解决的方法,而哪一个方法最适合需要根据需求来决定。如果你只是需要读取一个字符,那就使用 ReadRune() 方法 , 又或则你想读取一个完整的字符串,那 ReadString() 方法将是一个比较好的方法。

我希望你这篇文章对你有所帮助,如果有任何疑问,可以在下面的评论区留言。

本文由

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值