Go 语言文件操作:读取用户的输入 1 个改进

使用golang读取用户的输入有以下几种办法

1 使用bufio包

基本思路就是使用bufio.NewReader将新建一个标准输入的buffer,获取到buffer句柄就可以,使用Reader所绑定的方法去获取用户输入

代码示例

func main() {
    //创建一个用户输入的buffer
    inputBuff := bufio.NewReader(os.Stdin)
    //循环读取用户输入
    for {
        userInput, err := inputBuff.ReadString('\n')
        if nil != err {
            log.Println(err)
            return
        }
        fmt.Println("用户输入:", userInput[:len(userInput)-1])
        if userInput == "break" {
            break
        }
    }
    log.Println("exit...")
}

运行结果

PS D:\GoPractice\mping> go run .\main.go
hello
用户输入: hello
world
用户输入: world
hello world
用户输入: hello world
break
#这里没有退出循环,是由于代码中userInput的值是break\n,所以没有退出
用户输入: break

2 使用fmt包

可以使用fmt.Scan, fmt.Scanf, fmt.Scanln, 不过使用过程中有所限制,可以根据需求使用,例子以fmt.Scanf来演示

代码示例

func main() {
    //循环获取用户输入
    for {
        userInput := ""
        fmt.Scanf("%s", &userInput)
        fmt.Println("1用户输入:", userInput)
    }

}

运行结果

#从运行结果上来看,可以看出用fmt.Scanf来获取字串,是以空白字符来分割
PS D:\GoPractice\mping> go run .\main.go
hello
1用户输入: hello
1用户输入:
hello world
1用户输入: hello
1用户输入: world
1用户输入:

参考:studygolang.com/pkgdoc

结尾

可能还有更多办法,但是笔者暂时没有去深度探究,这里的两种是笔者之前学习go语言的时候掌握,这里提了个大概,有兴趣的小伙伴后续可以继续补充。

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!