Go并发编程实战
上QQ阅读APP看书,第一时间看更新

1.8 演练:Exit自动退出程序

由于我们并未开始详细介绍Go语言的基本语法,因此对于本节的Go代码读者不必追求一次看懂。下面通过实战演练Exit自动退出程序来进一步了解Go语言。

(1)打开Visual Studio Code编辑器,并打开目录go.introduce\chapter01\code02(如果没有此目录,则需要创建此目录),在该目录中新建一个main.go文件。

(2)输入示例程序1-3,该程序会循环检测用户的控制台输入。如果输入的字符为“exit”,那么程序会自动退出,否则打印出用户输入的信息,并继续等待用户的再次输入。

示例程序1-3 Exit自动退出程序:chapter01\code02\main.go

注意

示例程序1-3中的18行fmt.Sscan(input, & str)可以移除input变量中末尾的特殊换行符,否则无法和“exit”一致。

(3)在目录go.introduce\chapter01\code02中,用命令行窗口执行go run main.go命令,编译器会对main.go进行编译并运行,程序会显示提示符“> ”等待用户输入。

(4)当输入“hello”并按Enter键后,由于不是exit字符,因此会输出“输入hello”。当输入“exit”并按Enter键后,程序就会退出,该程序的执行过程如图1.21所示。

图1.21 Exit自动退出程序的运行界面

由于Exit自动退出程序是一个独立的可执行程序,因此必须在第01行(排除空格和注释)指定包名为main,并包含一个main函数(第07行)。第02~06行import后面用括号可以导入多个包。bufio、fmt和os这3个包都在Go语言标准库中:

· bufio包通过对io模块的封装,提供了数据缓冲功能,能够从一定程度上减少大块数据读写带来的开销。

· fmt包提供了打印函数,将数据以字符串形式输出到控制台或文件中。

· os包提供了不依赖平台的操作系统函数接口,比如可以获取环境变量、进行文件夹和文件操作等。

第09行末尾的双斜线(//)代表单行注释。第09~11行中的符号“:=”在Go语言中表示声明变量并对变量进行赋值。例如,第11行str := ""语句表示声明一个变量str,并把空字符串赋值给str。第12行for表示一个无限循环,在Go语言中,循环关键词只有一个for。

第14行input, _ = f.ReadString('\n')语句中的(_)表示空白标识符。在Go语言中,空白标识符具有特殊的用途,表示可以忽略对应的值。第15行if语句中的条件部分不能包含括号,且if后的第一个大括号({)必须和if在同一行,否则会报错。Go语言每行的结尾都不需要分号(;)。在编辑器中,如果给每行末尾加上分号(;),那么格式化工具gofmt等也会将这些分号删除掉。