Go Scan
最后修改时间 2024 年 4 月 11 日
在本文中,我们将展示如何在 Golang 中使用 scan 函数读取标准输入。scan 函数位于 fmt 包中。
Scan 函数
有三个 scan 函数:scan、scanln 和 scanf。
func Scan(a ...any) (n int, err error)
scan 函数从标准输入读取文本,并将连续的空格分隔的值存储到给定的参数中。换行符也算作空格。这意味着我们可以在按下 Enter 键后继续输入参数。
func Scanln(a ...any) (n int, err error)
Scanln 函数与 Scan 类似,但它会在遇到换行符时停止扫描。在最后一个项目之后,必须有一个换行符或 EOF。
func Scanf(format string, a ...any) (n int, err error)
Scanf 函数根据格式字符串从标准输入读取数据,并将连续的空格分隔的值存储到给定的参数中。它返回成功扫描的项目数。该函数允许更复杂的扫描。
Go Scan
在第一个示例中,我们使用 Scan 函数。
main.go
package main
import (
"fmt"
"log"
)
func main() {
var name string
fmt.Print("Enter your name: ")
_, err := fmt.Scan(&name)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Hello %s!\n", name)
}
该示例从用户那里读取输入,构建一条消息并将其打印到控制台。
$ go run main.go Enter your name: Peter Hello Peter!
main.go
package main
import (
"fmt"
"log"
)
func main() {
var name string
var age int
fmt.Print("Enter your name and age: ")
n, err := fmt.Scan(&name, &age)
if err != nil {
log.Fatal(err)
}
fmt.Printf("scanned %d arguments\n", n)
fmt.Printf("%s is %d years old\n", name, age)
}
我们扫描了两个参数。我们打印了扫描的参数数量以及由这两个参数构建的消息。
$ go run main.go Enter your name and age: Peter 23 scanned 2 arguments Peter is 23 years old
Go Scanln
使用 Scanln 时,换行符会终止扫描过程。
main.go
package main
import (
"fmt"
"log"
)
func main() {
var name1 string
var name2 string
var name3 string
fmt.Print("Enter three names: ")
_, err := fmt.Scanln(&name1, &name2, &name3)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Entered names: %s, %s, %s\n", name1, name2, name3)
}
我们使用 Scanln 函数读取三个名字。
Go Scanf
Scanf 函数支持更高级的扫描。
main.go
package main
import (
"fmt"
"log"
)
func main() {
var n1, n2, n3, n4, n5 int
fmt.Print("Enter five numbers separated by comma and space: ")
_, err := fmt.Scanf("%d, %d, %d, %d, %d", &n1, &n2, &n3, &n4, &n5)
if err != nil {
log.Fatal(err)
}
sum := n1 + n2 + n3 + n4 + n5
fmt.Printf("The sum of five numbers is: %d\n", sum)
}
在此示例中,我们读取五个数字。这些数字必须由逗号和空格分隔。
$ go run main.go Enter five numbers separated by comma and space: 1, 2, 3, 4, 5 The sum of five numbers is: 15
来源
在本文中,我们学习了 Golang 中的 scan 函数。