龙空技术网

Go语言开发教程:5 输入

启辰8 68

前言:

现时姐妹们对“c语言程序设计第五版视频教程”大概比较重视,各位老铁们都需要学习一些“c语言程序设计第五版视频教程”的相关资讯。那么小编在网络上汇集了一些对于“c语言程序设计第五版视频教程””的相关内容,希望大家能喜欢,兄弟们快快来了解一下吧!

介绍

在 Golang 的第四部分中,我们将了解用户输入的基础知识。 在 golang 中,我们可以通过几个函数获取用户输入,其中大多数函数与 C 编程语言(如 scanf)类似。 这种类型的输入非常强大,并且可以更好地控制要接收的输入。

Scan 函数

Scan 函数有助于获取以空格作为分隔符的值,即在遇到空格之前存储输入。 这意味着输入仅限于添加空格或换行符。 我们可以通过传递对要存储输入值的变量的引用来使用该函数。因此,我们可以在 Golang 中获得基本输入,如下所示:

package mainimport "fmt"func main() {    var pname string    fmt.Println("Enter your favourite programming language: ")    fmt.Scan(&pname)    fmt.Println("So, your favourite programming language is",pname)}
$ go run scan.goEnter your favourite programming language:pythonSo, your favourite programming language is python

我们需要声明变量来接受输入,因为我们需要该变量的引用来存储输入。 我们将在另一篇文章中讨论 & 和指针。 我们通过将变量 pname 的引用作为 &pname 传递来使用 Scan 函数,这意味着,获取变量 pname 的内存地址,我们只需将该地址作为 int 传递给 Scan 函数,剩下的工作就是将输入值存储在其中 。 然后我们像往常一样访问变量并对其进行操作。

在这里,如果您在输入中添加空格,则 Scan 函数将不会选取空格后面的值。 它在看到空间后严格停止接受值输入。 我们可以使用它一次输入多个变量。 我们知道 scan 在遇到空格之前获取输入,因此我们可以传递多个变量引用并将它们添加为输入。

var (    name   string    age    int    gender rune)fmt.Println("Enter your name age and gender: ")fmt.Scan(&name, &age, &gender)fmt.Printf("Hello %s, you are a %c and %d years old", name, gender, age)
$ go run scan.goEnter your name age and gender:Meet 19 77Hello Meet, you are a M and 19 years old

在这里,我们将多个变量(如姓名、年龄和性别)分别声明为 string、int 和 rune。 然后,我们可以通过逗号分隔的变量在单个扫描语句中输入所有这些。 在这里,我们需要将符文作为 int 值输入,因为它实际上是一个整数别名。 所以,我们输入77,相当于ASCII字符甚至Unicode字符集中的M。 因此,我们能够使用 Scan 函数输入多个变量。

Scanf 函数

Scanf 函数与 C 编程语言中的 scanf 非常相似,因为它允许指定传入输入的类型。 这将解决我们在上一个示例中在性别变量中输入 77 而不是 M 的问题。 Scanf 函数允许我们通过指定占位符类型和分隔符来获取输入。 分隔符基本上是两个或多个实体之间的分隔符。 我们可以使用空格分隔或 \n 作为输入分隔符,即我们希望在获取输入时将输入彼此分隔的方式。

var (    name   string    age    int    gender rune)fmt.Println("Enter your name age and gender: ")fmt.Scanf("%s %d %c", &name, &age, &gender)fmt.Printf("Hello %s, you are a %c and %d years old", name, gender, age)
$ go run scanf.goEnter your name age and gender:Meet 12 MHello Meet, you are a M and 12 years old

多么酷啊? 它确实对接受输入的内容和方式提供了更多的控制。 我们将输入仅视为空格分隔的值。 现在让我们尝试更好地控制如何获取和存储输入。

var (    name   string    age    int    gender rune)fmt.Println("Enter your name age and gender: ")fmt.Scanf("%s \n %d %c", &name, &age, &gender)fmt.Printf("Hello %s, you are a %c and %d years old", name, gender, age)
$ go run scanf.goEnter your name age and gender:Meet12 MHello Meet, you are a M and 12 years old

通过在 %s(姓名)和 %d(年龄)之间添加 \n,我们希望用户在一行上键入姓名,并在另一行上键入年龄和性别。 年龄和性别与之前一样,用空格隔开。

Scanln函数

Scanln 函数是 Scan 函数的修改版,因为它仅在按下换行符/回车键后停止输入。 因此,使用它我们可以输入多个变量,这些变量在一行中以空格分隔。

var s stringfmt.Println("Enter a string: ")fmt.Scanln(&s)fmt.Println(s)
$ go run scanln.goEnter a string:$ go run scanln.goEnter a string:Can't typeCan't$ ype-bash: ype: command not found

Scanln 函数甚至接受空字符串作为输入。 它只需要获取新行字符就会退出,它也只接受空格分隔的值。

Scan 和 Scanln 的主要区别在于 Scanln 不接受以空格分隔的输入,如果有多个输入,Scan 函数会将换行符/回车视为空格。 下面的例子会让事情变得非常清楚。

// scan.gopackage mainimport "fmt"func main() {        var (                name   string                age    int                gender rune        )        fmt.Println("Enter your name age and gender: ")        fmt.Scan(&name, &age, &gender)        fmt.Printf("Hello %s, you are a %c and %d years old", name, gender, age)}
//scanln.gopackage mainimport "fmt"func main() {        var s string        fmt.Println("Enter a string: ")        fmt.Scanln(&s)        fmt.Println("Inputted string : ", s)}
$ go run scan.goEnter your name age and gender:Meet1477Hello Meet, you are a M and 14 years old$ go run scanln.goEnter a string:Inputted string :

我们可以看到,即使有换行符和空格,Scan 函数也不会退出,直到它输入了所有输入值。 而 Scanln 函数只是等待按下换行符(Enter 键)并退出,因此甚至允许空字符串作为输入。

结论

这就是 Golang 中的基本输入技术。 我们在 fmt 包中看到了 Scan、Scanf 和 Scanln 等函数,它们允许我们以特定模式获取输入。 希望从这篇文章中,我们可以为进一步探索字符串、数组及其输入方式等奠定坚实的基础。 感谢您的阅读。 如果您有任何问题或反馈,请在评论或社交媒体上告诉我。 快乐编码:)

标签: #c语言程序设计第五版视频教程