Golang fmt.Fscanf()函数及示例

Golang fmt.Fscanf()函数及示例

在Go中,fmt包中的Fscanf()函数用于从输入流中读取格式化的数据,并将其存储到变量中。这个函数是Go中处理输入流的标准方式之一。

Fscanf()函数的基本语法

在Golang中,Fscanf()函数的基本语法如下:

func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)

其中:

  • r是io.Reader类型的数据源;
  • format是格式字符串;
  • a …interface{}参数是一个接口类型的可变参数列表,用于接收要读取的数据。

Fscanf()函数返回读取的数据的个数和可能的错误。

Fscanf()函数示例

下面是一个使用Fscanf()函数从标准输入中读取空格隔开的两个整数并将它们传递给fmt.Println()函数的示例:

package main

import (
    "fmt"
    "os"
)

func main() {
    var a, b int
    fmt.Fscanf(os.Stdin, "%d %d", &a, &b)
    fmt.Println(a, b)
}

在这个示例中,fmt.Fscanf()函数从标准输入中读取两个整数,并将这些值分别存储在a和b中。fmt.Println()函数接收这两个变量作为参数,并将它们打印到标准输出。

例如,如果在标准输入中输入“1 2”,则输出将是“1 2”。

Fscanf()函数的高级用法

Fscanf()函数还支持格式化字符串中的一些特殊字符,如%*s和%[。]s。

%*s

%*s用于跳过一个字符串或一个单词。下面是一个示例,它演示了如何使用Fscanf()函数跳过输入的单词:

package main

import (
    "fmt"
    "os"
)

func main() {
    var a, b int
    fmt.Fscanf(os.Stdin, "%*s %d %d", &a, &b)
    fmt.Println(a, b)
}

在这个示例中,fmt.Fscanf()函数跳过了一个单词,并将接下来的两个整数存储在变量a和b中。例如,如果在标准输入中输入“foo 2 3”,则输出将是“2 3”。

%[.]s

%[.]s用于匹配输入中的所有字符,直到遇到指定的字符为止。下面是一个示例,它演示了如何使用Fscanf()函数匹配并读取一个用括号括起来的字符串:

package main

import (
    "fmt"
    "os"
)

func main() {
    var s string
    fmt.Fscanf(os.Stdin, "%[()]%s%[)]", &s)
    fmt.Println(s)
}

在这个示例中,fmt.Fscanf()函数匹配并读取了一个用括号括起来的字符串,并将结果存储在变量s中。例如,如果在标准输入中输入“(Hello)”,则输出将是“Hello”。

结论

fmt.Fscanf()函数是Go中处理输入流的标准方式之一。它可以从标准输入或其他数据源读取格式化的数据,并将其存储在变量中。此函数还支持格式化字符串中的一些特殊字符,包括%*s和%[.]s。可以使用这些特殊字符来跳过字符串或匹配输入中的所有字符。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程