一文带你了解Go语言fmt标准库输入函数的使用 原创

目录
  • fmt 输入函数
  • Fscan、Fscanf、Fscanln
    • Fscan
    • Fscanf
    • Fscanln
  • Scan、Scanf、Scanln
    • Scan
    • Scanf
    • Scanln
  • Sscan、Sscanf、Sscanln
  • 小结

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 函数通过空格或换行符分隔内容并赋值给变量,因此使用 num1num2 变量接收分隔后的内容 123 456
  • 必须将 num1num2 的地址传递进去,而不是值传递。

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,将文件里的内容赋值给 num1num2 变量。

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
}

FscanlnFscan 类似,但是遇到换行符停止扫描,如果所扫描到的内容数量与变量数量不一致,将会返回 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 分别指定将字符串和整型的数据赋值给 nameage

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标准库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 一文带你了解Go语言fmt标准库输出函数的使用

    目录 fmt 输出函数 Fprint.Fprintf.Fprintln Print.Printf.Println Sprint.Sprintf.Sprintln 小结 fmt 输出函数 函数 描述 Fprint(w io.Writer, a ...any) (n int, err error) 使用默认格式将参数写入到 w 中,如果相邻两个参数都不是字符串,则在它们之前添加空格 Fprintf(w io.Writer, format string, a ...any) (n int, err e

  • Go语言基础go fmt命令使用示例详解

    go fmt 命令主要是用来帮你格式化所写好的代码文件[很多第三方集成软件都是使用了go fmt命令] 一.使用: go fmt <文件名>.go 使用go fmt命令,更多时候是用gofmt,而且需要参数 -w,否则格式化结果不会写入文件.gofmt -w src,可以格式化整个项目. 二.参数介绍 -l 显示那些需要格式化的文件 -w 把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出. -r 添加形如"a[b:len(a)] -> a[b:]"的重写规

  • golang fmt格式“占位符”的实例用法详解

    golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式. Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v",

  • 一文详解Go语言fmt标准库的常用占位符使用

    目录 占位符 占位符使用示例 占位符 通过占位符,可以指定格式进行输入或输出,以下为 fmt 标准库里的占位符: 普通占位符 占位符 描述 举例 结果 %v 默认格式的值 fmt.Printf("%v", User{Name: "小明", Age: 18}) {小明 18} %+v 如果打印的是结构体,额外打印字段名 fmt.Printf("%+v", User{Name: "小明", Age: 18}) {Name:小明 A

  • 一文带你了解Go语言fmt标准库输入函数的使用 原创

    目录 fmt 输入函数 Fscan.Fscanf.Fscanln Fscan Fscanf Fscanln Scan.Scanf.Scanln Scan Scanf Scanln Sscan.Sscanf.Sscanln 小结 fmt 输入函数 函数 描述 Fscan(r io.Reader, a ...any) (n int, err error) 从 r 中读取内容,以空格或换行符为分隔符,按顺序依次赋值给不同参数 Fscanf(r io.Reader, format string, a .

  • 一文带你入门Go语言中定时任务库Cron的使用

    目录 前言 快速开始 安装 导入 Demo Cron表达式格式 标准格式 预定义时间表 常用的方法介绍 new() AddJob() AddFunc() Start() 相关推荐 Go第三方库之cronexpr——解析 crontab 表达式 总结 前言 在平时的开发需求中,我们经常会有一些重复执行的操作需要触发执行,和系统约个时间,在几点几分几秒或者每隔几分钟跑一个任务,说白了就是定时任务,,想必大家第一反应都是linux的Crontab.其实定时任务不止使用系统自带的Crontab,在Go语

  • 一文带你掌握Go语言运算符的使用

    目录 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 运算符优先级 运算符用于在程序运行时执行数学或逻辑运算. Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 接下来让我们来详细看看各个运算符的介绍. 算术运算符 算术运算符,所有的数据类型要相同 下表列出了所有Go语言的算术运算符.假定 A 值为 10,B 值为 20. 运算符 描述 实例 + 相加 A + B 输出结果 30 - 相减 A - B 输出结果 -10 * 相

  • 一文带你了解Go语言中的类型断言和类型转换

    目录 类型断言 类型判断 为什么需要断言 类型转换 什么时候使用类型转换 类型为什么称为转换 类型结论 在Go中,类型断言和类型转换是一个令人困惑的事情,他们似乎都在做同样的事情. 下面是一个类型断言的例子: var greeting interface{} = "hello world" greetingStr := greeting.(string) 接着看一个类型转换的例子: greeting := []byte("hello world") greeting

  • 一文带你了解Go语言中的指针和结构体

    目录 前言 指针 指针的定义 获取和修改指针所指向变量的值 结构体 结构体定义 结构体的创建方式 小结 前言 前面的两篇文章对 Go 语言的基础语法和基本数据类型以及几个复合数据类型进行介绍,本文将对 Go 里面的指针和结构体进行介绍,也为后续文章做铺垫. 指针 在 Go 语言中,指针可以简单理解是一个地址,指针类型是依托于某一个类型而存在的,例如 Go 里面的基本数据类型 int.float64.string 等,它们所对应的指针类型为 *int.*float64.*string等. 指针的定

  • 一文带你了解Go语言中接口的使用

    目录 接口 接口的实现 接口类型变量 空接口 类型断言 类型断言变种 type switch 小结 接口 在 Go 语言中,接口是一种抽象的类型,是一组方法的集合.接口存在的目的是定义规范,而规范的细节由其他对象去实现.我们来看一个例子: import "fmt" type Person struct { Name string } func main() { person := Person{Name: "cmy"} fmt.Println(person) //

  • 一文带你掌握Go语言中的文件读取操作

    目录 os 包 和 bufio 包 os.Open 与 os.OpenFile 以及 File.Read 读取文件操作 bufio.NewReader 和 Reader.ReadString 读取文件操作 小结 os 包 和 bufio 包 Go 标准库的 os 包,为我们提供很多操作文件的函数,如 Open(name) 打开文件.Create(name) 创建文件等函数,与之对应的是 bufio 包,os 包是直接对磁盘进行操作的,而 bufio 包则是带有缓冲的操作,不用每次都去操作磁盘.

  • 一文带你了解Go语言中方法的调用

    目录 前言 方法 方法的调用 Receiver 参数类型的选择 方法的约束 小结 前言 在前面的 一文熟悉 Go 函数 文章中,介绍了 Go 函数的声明,函数的几种形式如匿名函数.闭包.基于函数的自定义类型和函数参数详解等,而本文将对方法进行介绍,方法的本质就是函数,介绍方法的同时也会顺带对比其与函数的不同之处. 方法 在 Go 中,我们可以为任何的数据类型定义方法(指针或接口除外),现在让我们看一看方法的声明和组成部分以及与函数有什么不同之处. type Person struct { age

  • 一文带你熟悉Go语言中函数的使用

    目录 函数 函数的声明 Go 函数支持变长参数 匿名函数 闭包 init 函数 函数参数详解 形式参数与实际参数 值传递 函数是一种数据类型 小结 函数 函数的英文单词是 Function,这个单词还有着功能的意思.在 Go 语言中,函数是实现某一特定功能的代码块.函数代表着某个功能,可以在同一个地方多次使用,也可以在不同地方使用.因此使用函数,可以提高代码的复用性,减少代码的冗余. 函数的声明 通过案例了解函数的声明有哪几部分: 定义一个函数,实现两个数相加的功能,并将相加之后的结果返回. f

随机推荐