From 522e63960b5979273e53080be0c90532b356e109 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Wed, 11 Nov 2015 12:47:10 -0500 Subject: [PATCH] 12.0-12.1 --- README.md | 2 +- README_gc.md | 2 +- TOC.md | 3 +++ eBook/11.0.md | 2 +- eBook/12.0.md | 2 +- eBook/12.1.md | 13 +++++++------ 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2cdf881..5386c4c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ## 翻译进度 -11.14 [结构体、集合和高阶函数](eBook/11.14.md) +12.1 [读取用户的输入](eBook/12.1.md) ## 支持本书 diff --git a/README_gc.md b/README_gc.md index 26c087a..33aee06 100644 --- a/README_gc.md +++ b/README_gc.md @@ -30,4 +30,4 @@ Golang 编程:245386165 |更新日期 |更新内容 |----------|------------------ -|2015-11-10|11.14 结构体、集合和高阶函数 +|2015-11-11|12.1 读取用户的输入 diff --git a/TOC.md b/TOC.md index 7b2bc79..db374a4 100644 --- a/TOC.md +++ b/TOC.md @@ -103,3 +103,6 @@ - 11.12 [接口与动态类型](11.12.md) - 11.13 [总结:Go 中的面向对象](11.13.md) - 11.14 [结构体、集合和高阶函数](11.14.md) +- 第三部分:Go 高级编程 + - 第12章:[读写数据](12.0.md) + - 12.1 [读取用户的输入](12.1.md) diff --git a/eBook/11.0.md b/eBook/11.0.md index 077a16a..e374fb1 100644 --- a/eBook/11.0.md +++ b/eBook/11.0.md @@ -5,5 +5,5 @@ ## 链接 - [目录](directory.md) -- 上一章:[垃圾回收和SetFinalizer](10.8.md) +- 上一章:[垃圾回收和 SetFinalizer](10.8.md) - 下一节:[接口是什么](11.1.md) diff --git a/eBook/12.0.md b/eBook/12.0.md index 1ed552c..b5defd2 100644 --- a/eBook/12.0.md +++ b/eBook/12.0.md @@ -5,5 +5,5 @@ ## 链接 - [目录](directory.md) -- 上一章:[接口(interface)与反射(reflection)](11.0.md) +- 上一章:[结构体、集合和高阶函数](11.14.md) - 下一节:[读取用户的输入](12.1.md) diff --git a/eBook/12.1.md b/eBook/12.1.md index 51295f1..a436996 100644 --- a/eBook/12.1.md +++ b/eBook/12.1.md @@ -71,6 +71,7 @@ func main() { 屏幕是标准输出 `os.Stdout`;`os.Stderr` 用于显示错误信息,大多数情况下等同于 `os.Stdout`。 一般情况下,我们会省略变量声明,而使用 `:=`,例如: + ```go inputReader := bufio.NewReader(os.Stdin) input, err := inputReader.ReadString('\n') @@ -81,6 +82,7 @@ input, err := inputReader.ReadString('\n') 第二个例子从键盘读取输入,使用了 `switch` 语句: 示例 12.3 [switch_input.go](examples/chapter_12/switch_input.go): + ```go package main import ( @@ -93,12 +95,12 @@ func main() { inputReader := bufio.NewReader(os.Stdin) fmt.Println("Please enter your name:") input, err := inputReader.ReadString('\n') - + if err != nil { fmt.Println("There were errors reading, exiting program.") return } - + fmt.Printf("Your name is %s", input) // For Unix: test with delimiter "\n", for Windows: test with "\r\n" switch input { @@ -107,7 +109,7 @@ func main() { case "Ivo\r\n": fmt.Println("Welcome Ivo!") default: fmt.Printf("You are not welcome here! Goodbye!") } - + // version 2: switch input { case "Philip\r\n": fallthrough @@ -115,7 +117,7 @@ func main() { case "Chris\r\n": fmt.Printf("Welcome %s\n", input) default: fmt.Printf("You are not welcome here! Goodbye!\n") } - + // version 3: switch input { case "Philip\r\n", "Ivo\r\n": fmt.Printf("Welcome %s\n", input) @@ -137,11 +139,10 @@ iii) 输入的行数 **练习 12.2:** [calculator.go](exercises/chapter_12/calculator.go) -编写一个简单的逆波兰式计算器,它接受用户输入的整型数(最大值 999999)和运算符 +、-、*、/。 +编写一个简单的逆波兰式计算器,它接受用户输入的整型数(最大值 999999)和运算符 +、-、\*、/。 输入的格式为:number1 ENTER number2 ENTER operator ENTER --> 显示结果 当用户输入字符 'q' 时,程序结束。请使用您在练习11.3中开发的 `stack` 包。 - ## 链接 - [目录](directory.md)