Go Fmt: Fprintf, Sprintf, Scanf, and Sscan
fmt
包是 Go 语言中必不可少的包之一,它提供了格式化 I/O 流的功能。该软件包包含几个功能,允许我们格式化数据,将其打印到控制台或文件,并从用户那里读取数据。在这篇博客中,我们将探讨 fmt
包中可用的不同功能,包括 Fprintf
、Fprint
、Fprintln
、Sprintf
、Scanf
和 Sscan
。
Go fmt Fprintf
Fprintf
函数用于格式化数据并将其打印到文件或输出流。其语法如下:
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
该函数需要一个 io.Writer
接口、格式字符串和值的可变参数列表。这些值的传递顺序与它们在格式字符串中显示的顺序相同。 Fprintf
函数根据格式字符串设置数据的格式,并将其写入指定的 io.Writer。
下面是如何使用 Fprintf
函数的示例:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("output.txt")
if err != nil {
panic(err)
}
defer file.Close()
name := "John"
age := 30
fmt.Fprintf(file, "Name: %s, Age: %d\n", name, age)
}
在此示例中,我们创建一个名为 output.txt
的新文件,并使用 Fprintf
函数将格式化的字符串写入该文件。该程序的输出将是一个包含以下内容的文件:
Name: John, Age: 30
Go fmt Fprint
Fprint 函数类似于 Fprintf,但将格式化字符串写入 Writer
而不是文件。其语法如下:
func Fprint(w io.Writer, a ...interface{}) (n int, err error)
该函数需要一个io.Writer
接口和值的可变参数列表。这些值将打印到指定的 io.Writer
。
下面是如何使用 Fprint
函数的示例:
package main
import (
"fmt"
"os"
)
func main() {
name := "John"
age := 30
fmt.Fprint(os.Stdout, "Name: ", name, ", Age: ", age, "\n")
}
在此示例中,我们使用 Fprint
函数将格式化字符串打印到控制台。该程序的输出将是:
Name: John, Age: 30
Go fmt Sprintf
Sprintf
函数用于格式化并返回格式化字符串。其语法如下:
func Sprintf(format string, a ...interface{}) string
该函数采用格式字符串和值的可变参数列表。这些值的传递顺序与它们在格式字符串中显示的顺序相同。Sprintf
函数根据格式字符串设置数据的格式,并返回格式化字符串。
下面是如何使用 Sprintf
函数的示例:
package main
import (
"fmt"
)
func main() {
name := "John"
age := 30
output := fmt.Sprintf("Name: %s, Age: %d\n", name, age)
fmt.Print(output)
}
在此示例中,我们使用 Sprintf
函数格式化字符串,并使用打印函数将其打印到控制台。该程序的输出将是:
Name: John, Age: 30
Go fmt Scanf
Scanf 函数用于从标准输入(os.Stdin
)。其语法如下:
func Scanf(format string, a ...interface{}) (n int, err error)
该函数采用格式字符串和值的可变参数列表。这些值是指向将存储扫描数据的变量的指针。Scanf
函数从标准输入中读取数据,并根据格式字符串将其存储在指定的变量中。
下面是如何使用 Scanf
函数的示例:
package main
import (
"fmt"
)
func main() {
var name string
var age int
fmt.Print("Enter your name: ")
fmt.Scanf("%s", &name)
fmt.Print("Enter your age: ")
fmt.Scanf("%d", &age)
fmt.Printf("Name: %s, Age: %d\n", name, age)
}
在此示例中,我们使用 Scanf
函数从标准输入中读取名称和年龄,并使用 Printf
函数将其打印到控制台。该程序的输出将是:
Enter your name: John
Enter your age: 30
Name: John, Age: 30
Golang fmt Sscan
Sscan 函数类似于 Scanf,但从字符串而不是标准输入中读取数据。其语法如下:
func Sscan(str string, a ...interface{}) (n int, err error)
该函数接受一个字符串和一个可变参数值列表。这些值是指向将存储扫描数据的变量的指针。Sscan
函数从指定的字符串中读取数据,并根据格式字符串将其存储在指定的变量中。
下面是如何使用 Sscan
函数的示例:
package main
import (
"fmt"
)
func main() {
var name string
var age int
input := "John 30"
fmt.Sscan(input, &name, &age)
fmt.Printf("Name: %s, Age: %d\n", name, age)
}
在此示例中,我们使用 Sscan
函数从字符串中读取名称和年龄,并使用 Printf
函数将其打印到控制台。该程序的输出将是:
Name: John, Age: 30
参考: