一文了解 Go fmt 标准库输入函数的使用
source link: https://blog.51cto.com/chenmingyong/5982196
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
一文了解 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
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
"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
"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
func main() {
var name string
fmt.Println("请输入你的姓名:")
fmt.Scan(&name)
fmt.Println(name) // 小明
}
- 运行结果:
小明
小明
- 使用
name
变量接收输入的值
- Scanf
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
func main() {
var name string
fmt.Println("请输入你的姓名:")
fmt.Scanln(&name)
fmt.Println(name) // 小明
}
和 Scan
是类似的,只不过它遇到换行符后就停止扫描。
Sscan、Sscanf、Sscanln
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 标准库的常用输入函数进行了介绍。输入函数分三类介绍,第一类是从文件获取输入的内容,第二类是从标准输入获取输入的内容,第三类是从字符串里获取输入的内容。并给出简单的示例代码。
- 赞
- 收藏
- 评论
- 分享
- 举报
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK