📜  Golang 中的 fmt.Fscanf()函数示例(1)

📅  最后修改于: 2023-12-03 14:41:33.865000             🧑  作者: Mango

Golang中的fmt.Fscanf()函数

fmt.Fscanf()函数是Golang中用于从标准输入(os.Stdin)、文件或者字符串中读取数据的函数之一。它的功能类似于C语言中的fscanf()函数。在本文中,我们将会介绍fmt.Fscanf()函数的用法以及一些示例的应用。

函数原型

以下是fmt.Fscanf()函数的原型:

func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)
  • r参数为可读取的输入源,一般为标准输入、文件或者字符串。
  • format参数为格式化字符串,其中的格式占位符与fmt.Printf()函数相同。
  • a ...interface{}参数为接收的变量指针,可以写入不同类型的变量。

该函数会读取输入源,将读到的数据根据格式化字符串format进行解析,并将解析结果存储到变量的内存位置中。

示例

以下是fmt.Fscanf()函数的示例:

示例1:从标准输入中读取数据
package main

import "fmt"

func main() {
    var name string
    var age int

    fmt.Print("请输入你的姓名和年龄:")
    fmt.Fscanf(os.Stdin, "%s %d", &name, &age)

    fmt.Printf("你的姓名是 %s,年龄为 %d 岁", name, age)
}

以上代码会提示用户输入自己的姓名和年龄,然后使用fmt.Fscanf()函数从标准输入中读取并解析这些数据,最后输出解析结果。

示例2:从文件中读取数据
package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Open("data.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    var name string
    var age int

    fmt.Fscanf(file, "%s %d", &name, &age)

    fmt.Printf("姓名:%s,年龄:%d", name, age)
}

以上代码会从文件data.txt中读取一行数据,其中包含一个字符串和一个整数。使用fmt.Fscanf()函数对这行数据进行解析,并将解析结果存储在变量中,最后输出解析结果。

示例3:从字符串中读取数据
package main

import "fmt"

func main() {
    str := "123.45 678.90"
    var num1 float64
    var num2 float64

    fmt.Fscanf(strings.NewReader(str), "%f %f", &num1, &num2)

    fmt.Printf("num1 = %.2f, num2 = %.2f", num1, num2)
}

以上代码会从字符串中读取两个浮点数,使用fmt.Fscanf()函数对这些数据进行解析,并将解析结果存储在变量中,最后输出解析结果。

小结

在本文中,我们介绍了fmt.Fscanf()函数的用法,并提供了一些使用示例。作为Golang内置的标准库函数之一,fmt.Fscanf()函数在日常的数据读取处理中非常有用。希望本文能对你有所帮助。