使用fmt.fscanf函数从字符串中读取格式化的数据并赋值给变量,直到遇到指定分隔符
在go语言的fmt包中,提供了一系列的输入和输出函数,其中包括用于格式化输入的函数fmt.fscanf。通过使用该函数,可以从一个字符串中按照指定的格式读取数据,并将其赋值给相应的变量。
首先,让我们来看一个简单的示例。
package mainimport ( "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函数从字符串中读取格式化的数据并赋值给变量,直到遇到指定分隔符的详细内容。