GO语言编程从入门到实践
上QQ阅读APP看书,第一时间看更新

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 运行结果