fmt 包是 Go 语言中必不可少的包之一,它提供了格式化 I/O 流的功能。该软件包包含几个功能,允许我们格式化数据,将其打印到控制台或文件,并从用户那里读取数据。在这篇博客中,我们将探讨 fmt 包中可用的不同功能,包括 FprintfFprintFprintlnSprintfScanfSscan

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

参考: