首页  >  文章  >  后端开发  >  使用fmt.Fscanf函数从字符串中读取格式化的数据并赋值给变量,直到遇到指定分隔符

使用fmt.Fscanf函数从字符串中读取格式化的数据并赋值给变量,直到遇到指定分隔符

WBOY
WBOY原创
2023-07-25 10:13:271328浏览

使用fmt.Fscanf函数从字符串中读取格式化的数据并赋值给变量,直到遇到指定分隔符

在Go语言的fmt包中,提供了一系列的输入和输出函数,其中包括用于格式化输入的函数fmt.Fscanf。通过使用该函数,可以从一个字符串中按照指定的格式读取数据,并将其赋值给相应的变量。

首先,让我们来看一个简单的示例。

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "42 3.14 Go"
    var num int
    var pi float64
    var lang string

    _, err := fmt.Fscanf(strings.NewReader(str), "%d %f %s", &num, &pi, &lang)
    if err != nil {
        fmt.Printf("格式化输入错误:%s
", err)
        return
    }

    fmt.Printf("num: %d
", num)
    fmt.Printf("pi: %f
", pi)
    fmt.Printf("lang: %s
", lang)
}

在上面的代码中,我们定义了一个字符串str,其中包含了一个整数、一个浮点数和一个字符串,以空格分隔。

接下来,我们使用fmt.Fscanf函数从这个字符串中按照指定的格式读取数据,并将结果赋值给对应的变量。

在本例中,我们分别定义了num、pi和lang三个变量来接收读取到的数据。我们通过传递它们的内存地址(使用&操作符)作为参数,来使得fmt.Fscanf能够将读取到的值存储到相应的变量中。

%格式化字符串指定了我们期望读取的数据类型。在本例中,%d表示一个整数,%f表示一个浮点数,%s表示一个字符串。

注意到,我们使用了strings.NewReader函数将字符串str包装成一个io.Reader接口的实现,以便于传递给fmt.Fscanf函数。这样做是因为fmt.Fscanf函数需要一个io.Reader类型的参数,而它可以从任何实现了该接口的类型中读取数据。

最后,我们通过检查err变量,来判断读取是否成功。如果err不为nil,说明发生了格式化输入错误。

如果一切正常,我们就可以打印出读取到的值。

在上面的代码中,我们使用fmt.Printf函数打印了num、pi和lang的值。你可以根据自己的需求来对这些值进行处理。

综上所述,通过使用fmt.Fscanf函数,我们可以方便地从一个字符串中读取格式化的数据,并将其赋值给相应的变量。这对于处理用户输入、解析文件数据等场景非常有用。不同的格式化字符串可以用于指定不同的数据类型。需要注意的是,读取过程中遇到指定的分隔符时会停止读取,并将剩余的数据留在输入流中。

以上是使用fmt.Fscanf函数从字符串中读取格式化的数据并赋值给变量,直到遇到指定分隔符的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn