一文了解 Go fmt 标准库输入函数的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文了解 Go fmt 标准库输入函数的使用相关的知识,希望对你有一定的参考价值。

耐心和持久胜过激烈和狂热。

哈喽大家好,我是陈明勇,今天分享的内容是 Go fmt 标准库输入函数的使用。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!

fmt 输入函数

函数

描述

Fscan(r io.Reader, a ...any) (n int, err error)

从 r 中读取内容,以空格或换行符为分隔符,按顺序依次赋值给不同参数

Fscanf(r io.Reader, format string, a ...any) (n int, err error)

从 r 中读取内容,以空格为分隔符,将分割后的内容存储到由格式决定的不同参数中。r 中存在的换行符必须与格式中的换行符相匹配

Fscanln(r io.Reader, a ...any) (n int, err error)

类似于 Fscan 函数,不同点是遇到换行符后停止读取,最后一项内容后面必须有换行符或 EOF

Scan(a ...any) (n int, err error)

从标准输入读取内容,以空格或换行符为分隔符,按顺序依次赋值给不同参数

Scanf(format string, a ...any) (n int, err error)

从标准输入读取内容,以空格为分隔符,将分割后的内容存储到由格式决定的不同参数中。标准输入中的换行符必须与格式中的换行符相匹配。特殊情况是 %c 占位符可以接收空格或换行符等

Scanln(a ...any) (n int, err error)

类似于 Scan 函数,不同点是遇到换行符后停止读取,最后一项内容后面必须有换行符或 EOF

Sscan(str string, a ...any) (n int, err error)

从字符串中读取内容,以空格或换行符为分隔符,按顺序依次赋值给不同参数

Sscanf(str string, format string, a ...any) (n int, err error)

从字符串中读取内容,以空格为分隔符,将分割后的内容存储到由格式决定的不同参数中。字符串中的换行符必须与格式中的换行符相匹配

Sscanln(str string, a ...any) (n int, err error)

类似于 Sscan 函数,不同点是遇到换行符后停止读取,字符串最后面必须有换行符或 EOF

Fscan、Fscanf、Fscanln

  • Fscan
func main() 
file, err := os.Open("./test.txt")
if err != nil
return

defer file.Close()
var num1, num2 int
_, err = fmt.Fscan(file, &num1, &num2)
if err != nil
return

fmt.Println(num1, num2) // 123 456
  • ​./test.txt​​ 的内容为:​​123 456​
  • ​Fscan​​ 函数通过空格或换行符分隔内容并赋值给变量,因此使用 ​​num1​​ 和 ​​num2​​ 变量接收分隔后的内容 ​​123​​ ​​456​​。
  • 必须将 ​​num1​​ 和 ​​num2​​ 的地址传递进去,而不是值传递。
  • Fscanf
import (
"fmt"
"os"
)

func main()
file, err := os.Open("./test.txt")
if err != nil
return

defer file.Close()
var num1, num2 int
_, err = fmt.Fscanf(file, "%d%d", &num1, &num2)
if err != nil
return

fmt.Println(num1, num2) // 123 456

通过占位符 %d,将文件里的内容赋值给 ​​num1​​ 和 ​​num2​​ 变量。

  • Fscanln
import (
"fmt"
"os"
)

func main()
file, err := os.Open("./test.txt")
if err != nil
return

defer file.Close()
var num1, num2 int
_, err = fmt.Fscanln(file, &num1, &num2)
if err != nil
return

fmt.Println(num1, num2) // 123 456

​Fscanln​​ 与 Fscan 类似,但是遇到换行符停止扫描,如果所扫描到的内容数量与变量数量不一致,将会返回 error

Scan、Scanf、Scanln

  • Scan
import "fmt"

func main()
var name string
fmt.Println("请输入你的姓名:")
fmt.Scan(&name)
fmt.Println(name) // 小明
  • 运行结果:
请输入你的姓名:
小明
小明
  • 使用 ​​name​​ 变量接收输入的值
  • Scanf
import "fmt"

func main()
var name string
var age int
fmt.Println("请输入你的姓名和性别:")
fmt.Scanf("%s%d", &name, &age)
fmt.Println(name, age) // 小明
  • 运行结果:
请输入你的姓名和性别:
小明 18
小明 18

使用占位符 ​​%s​​​ 和 ​​%d​​​ 分别指定将字符串和整型的数据赋值给 ​​name​​​ 和 ​​age​​。

  • Scanln
import "fmt"

func main()
var name string
fmt.Println("请输入你的姓名:")
fmt.Scanln(&name)
fmt.Println(name) // 小明

和 ​​Scan​​ 是类似的,只不过它遇到换行符后就停止扫描。

Sscan、Sscanf、Sscanln

import "fmt"

func main()
var name string
var age int
fmt.Sscan("小明 20", &name, &age)
fmt.Println(name, age) // 小明 20

fmt.Sscanf("小红 18", "%s%d", &name, &age)
fmt.Println(name, age) // 小红 18

fmt.Sscanln("小刚 21", &name, &age)
fmt.Println(name, age) // 小刚 21

这三个输入函数和上面介绍的类似,只不过这三个是从字符串里面读取的内容。

小结

本篇文章对 fmt 标准库的常用输入函数进行了介绍。输入函数分三类介绍,第一类是从文件获取输入的内容,第二类是从标准输入获取输入的内容,第三类是从字符串里获取输入的内容。并给出简单的示例代码。

以上是关于一文了解 Go fmt 标准库输入函数的使用的主要内容,如果未能解决你的问题,请参考以下文章

一文了解 Go fmt 标准库的常用占位符及其简单使用

一文了解 Go 标准库 strings 常用函数和方法

一文了解 Go 标准库 math 和 rand 的常用函数

一文了解 Go 标准库 strconv:string 与其他基本数据类型的转换

Go Go 简单的很,标准库之 fmt 包的一键入门

Go Go 简单的很,标准库之 fmt 包的一键入门