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。可以使用这些特殊字符来跳过字符串或匹配输入中的所有字符。