1.9 动手练习:编程实现人机交互
我们已经成功搭建了Go语言的开发环境,并在GoLand中编写了简单的应用程序,本节使用Go语言的内置包fmt实现数据输入和输出功能。
内置包fmt的Printf()函数将数据以字符串格式输出,它的语法定义如下:
Printf(format string, a ...interface{}) (n int, err error)
语法说明如下:
1)参数format以字符串类型表示,数据以双引号“""”或反引号“``”表示,并支持字符串格式化,即在字符串里面设置变量,使数据能随着变量值的变化而变化。
2)参数a是不固定参数,即允许设置0或多个参数;参数类型为空接口,即支持任意数据类型的数据,主要为字符串格式化提供变量设置。
3)返回值n为整型,代表输出字符串的长度。
4)返回值error代表函数执行过程中出现的异常信息。
除了Printf()函数之外,内置包fmt还定义了其他输出函数:Sprintf()、Println()和Sprintln(),函数说明如下:
1)Sprintf()与Printf()的参数相同,返回值为字符串类型,它将输出字符串作为函数返回值。
2)Println()只要参数a,它是不固定参数,参数类型为空接口,允许输出0个或多个数据,返回值n和error分别代表输出数据的长度和异常信息。
3)Sprintln()与Println()的参数相同,返回值为字符串类型,输出数据以字符串类型作为函数返回值。
内置包fmt的Scanln()函数允许用户在程序命令行输入数据,它的语法定义如下:
Scanln(a ...interface{}) (n int, err error)
语法说明如下:
1)参数a是不固定参数,即允许设置0或多个参数;参数类型为空接口,即支持任意数据类型的数据,它用于存储用户输入的数据。
2)返回值n为整型,代表输入字符串的长度。
3)返回值error代表函数执行过程中出现的异常信息。
除了Scanln()函数之外,内置包fmt还定义了其他输入函数:Scan()、Scanf()、Sscan()和Sscanln()等,它们的功能和使用方式都是大同小异,本书就不再详细讲述。
了解了Go语言的输入和输出函数后,下一步使用输入和输出函数实现人机交互功能,简单来说就是用户按照提示输入数据,程序就输出对应的内容,实现过程如下:
package main import "fmt" func main() { // 定义变量name、age、addr // 用于存储用户输入的数据 var name, age, addr string // 输出操作提示 fmt.Printf("请输入你的名字:\n") // 存储用户输入的数据 fmt.Scanln(&name) // 输出操作提示 fmt.Printf("请输入你的年龄:\n") // 存储用户输入的数据 fmt.Scanln(&age) // 输出操作提示 fmt.Printf("请输入你的居住地:\n") // 存储用户输入的数据 fmt.Scanln(&addr) // 输出用户输入的所有数据 fmt.Printf("你的名字是:%v,年龄:%v,居住地:%v",name,age,addr) }
在GoLand中运行上述代码,在GoLand的Run窗口按照程序提示输入数据并按回车键完成当前输入,输入数据在Run窗口无法显示,数据直接存储在变量name、age和addr中,只有通过输出函数输出变量值才能看到用户输入的数据,如图1-30所示。
图1-30 运行结果