Golang中国

请问各位大神如何go读取键盘输入的的值,我自己找不到相关的内容解释

6 回复
jimmykuu
#1 jimmykuu • 2014-02-20 20:24

fmt.Scanfmt.Scanffmt.Scanln

wxfbboy
#2 wxfbboy • 2014-02-20 22:01

谢谢站长耐心解答:)

jemygraw
#3 jemygraw • 2014-02-21 12:15
package main

import (
    "fmt"
)

func scan_demo() {
    var apple_str, orange_str string
    fmt.Scan(&apple_str, &orange_str)
    fmt.Println(apple_str)
    fmt.Println(orange_str)
}
func scanf_demo() {
    var apple_count int
    var apple_name string
    var apple_price float64
    fmt.Scanf("%d %s %f", &apple_count, &apple_name, &apple_price)
    fmt.Println(apple_count)
    fmt.Println(apple_name)
    fmt.Println(apple_price)
}
func scanln_demo() {
    var app_line string
    fmt.Scanln(&app_line)
    fmt.Println(app_line)
}
func main() {
    //scan_demo()
    //scanf_demo()
    scanln_demo()
}
wxfbboy
#4 wxfbboy • 2014-02-21 15:53

@jemygraw 谢谢 有详细的代码段实例 可以学习了

kulle
#5 kulle • 2014-05-09 10:35

我要输入的命令是变长度的, 例如输入ab, 有时要输入ab cd, 用Scanln 遇到空格就识别为下一次输入, 有什么办法解决呢

jemygraw
#6 jemygraw • 2014-05-14 13:04

@kulle 用bufio

cmdReader := bufio.NewReader(os.Stdin)
cmdStr, err := cmdReader.ReadString('\n')
//这里把读取的数据后面的换行去掉,对于Mac是"\r",Linux下面
//是"\n",Windows下面是"\r\n",所以为了支持多平台,直接用
//"\r\n"作为过滤字符
cmdStr = strings.Trim(cmdStr, "\r\n")
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。