开发者

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

开发者 https://www.devze.com 2023-01-03 10:40 出处:网络 作者: 陈明勇
目录fmt 输入函数Fscan、Fscanf、FscanlnFscanFscanfFscanlnScan、Scanf、ScanlnScanScanfScanlnSscan、Sscanf、Sscanln小结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.Reajsder, 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, num编程客栈2 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, pythonerr := os.Opandroiden("./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 nhttp://www.devze.comame 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.Prin开发者_JAV培训tln(name, age) // 小红 18
      
          fmt.Sscanln("小刚 21", &name, &age)
          fmt.Println(name, age) // 小刚 21
      }

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

      小结

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

      到此这篇关于一文带你了解Go语言fmt标准库输入函数的使用的文章就介绍到这了,更多相关Go语言fmt标准库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号