go学习(3)、输入

一、输入

1、fmt.Scan

情况1:

//1
	var name string //定义空字符串""
	fmt.Println("请输入姓名:")
	fmt.Scan(&name) //将终端输入的文本存储到name所指向的内存地址
	fmt.Println(name)

情况2:

//2
	var name string
	var age int
	fmt.Println("请输入姓名和年龄:")
	count, err := fmt.Scan(&name, &age) 
	if err == nil {
		fmt.Println(count, err)
		fmt.Println(name, age)
	} else {
		fmt.Println("输入错误", nil)
	}


//

请输入姓名和年龄:
golang
20
2 <nil>
golang 20

Process finished with the exit code 0

fmt.Scan()函数返回两个值:

        1、count: 记录输入正确的个数

         2、err: 记录输入错误的信息

fmt.Scan()的特点:

        如果在函数中传入多个引用变量,子终端中没有输入完的话,终端会一直等待,如下:

        

 

2、fmt.Scanln

功能与上面的fmt.Scan一样。唯一的区别在于,当在要求输入多个值时,如果只输入其中的一部分,然后回车后,终端不会再等待输入,如下

    var name string
    var age int
	fmt.Println("请输入姓名和年龄:")
	count, err := fmt.Scanln(&name, &age)
	if err == nil {

		fmt.Println(name, age)
	} else {
		fmt.Println("输入错误", nil)
	}
	fmt.Println(count, err)

//
请输入姓名和年龄:
go
输入错误 <nil>
1 unexpected newline

Process finished with the exit code 0

3、fmt.Scanf

以指定的格式输入,如下,会出输入中提取出姓名

var name string
fmt.Println("请输入姓名:")
fmt.Scanf("我的姓名是%s", &name)
fmt.Println(name)
//
请输入姓名:
我的姓名是go
go

Process finished with the exit code 0

 4、fmt 输入函数存在的问题

如下:如果在输入的一行中有空格存在,那么回车后只能提取到第一个空格前的字符

var message string
fmt.Println("请输入消息:")
fmt.Scanln(&message)
fmt.Println(message)

//
请输入消息:
开始了的访客数量大幅减少开发商 十六点JFK斯洛伐克时间
开始了的访客数量大幅减少开发商

Process finished with the exit code 0

5、解决fmt输入的问题

通过读取os模块下的Stdin标准输入模块(终端中输入的内容都在此模块下获取一行有空格的值。

ReadLine()返回三个参数:

       line:从stdin中读取一行的数据,类型为字节集合

       isPrefix:

                reader默认一次能4096个字节

                 如果通过reader一次性读完,isPrefix=false

                 如果先读一部分,isPrefix=true,证明还有内容未读,直到读完的一瞬间isPrefix=false

        err:输入时出错错误的信息

        代码中的下划线:在go中声明了的变量未使用的话会报错,在代码中reader.ReadLine()会返回三个值、而我们这里只用到了line值、至于isPrefix, err没有用到,所以我们不需要声明。直接用_代替即可,如果声明不用则会报错

reader := bufio.NewReader(os.Stdin)
line, _, _ := reader.ReadLine()
data := string(line)
fmt.Println(data)


//

发生了的开发建设离开 啊士大夫艰苦拉萨大家发 就发送大量福克斯点击发送
发生了的开发建设离开 啊士大夫艰苦拉萨大家发 就发送大量福克斯点击发送

Process finished with the exit code 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值