day2:课后作业1实现 | 青训营

47 阅读1分钟

课后作业:

  1. 简化go输入:修改第一个例子猜谜游戏里面的最终代码,使用fmt. Scanf来简化代码实现。

作业一:

原代码步骤:

  1. reader := bufio.NewReader(os.Stdin):使用bufio.NewReader将输入转化为流的形式
  2. input, err := reader.ReadString('\n'):通过reader.ReadString读取流中数据(到换行符'\n'为止)
  3. 由于该操作会把最后的换行符一起读取到input里,需要用input = strings.Trim(input, "\r\n")把末尾的换行符删去。
  4. 此时的input变量类型为strings(字符串),为了能够进行猜字数字的比较,需要使用guess, err := strconv.Atoi(input)把字符串转换为整数。

可以看到上述过程使用了多个函数进行读取及转换,可采用fmt.scanf函数直接读取数字 go零基础的同学首先需要了解go中scanf用法(参考资料:deepinout.com/go/go-examp…

可以看到读取整数可以用到fmt.Scanf("%d", &age),于是我们将代码优化为如下

func main() {
...//省略不改动的代码
	fmt.Println("Please input your guess")
	var guess int  //定义guess变量为int
	for {
		_,err:=fmt.Scanf("%d\n",&guess)  //定义修改为fmt.Scanf输入
...//省略代码
	}
}