📜  如何在 Golang 中打印结构变量数据?(1)

📅  最后修改于: 2023-12-03 15:24:10.743000             🧑  作者: Mango

如何在 Golang 中打印结构变量数据?

在 Golang 中,使用 fmt 包提供的 Printf 方法可以打印出结构变量的数据。以下代码片段演示了如何打印一个名为 person 的结构体变量:

package main

import "fmt"

type Person struct {
    name string
    age  int
    sex  string
}

func main() {
    p := Person{name: "Alice", age: 20, sex: "female"}
    fmt.Printf("Name: %s, Age: %d, Sex: %s\n", p.name, p.age, p.sex)
}

以上代码输出:

Name: Alice, Age: 20, Sex: female

可以看到,我们使用 %s%d 等占位符来指定每个变量的类型。这是一种常用的输出格式。以下是一些常见的占位符:

  • %v:变量的默认格式
  • %+v:输出变量的详细信息,包括字段名等
  • %#v:输出变量的代码表示形式
  • %T:输出变量的类型

除了使用 Printf 方法外,我们还可以使用 Sprintf 方法将数据格式化为一个字符串,或者使用 Fprintf 将数据写入一个 io.Writer,例如文件。

s := fmt.Sprintf("Name: %s, Age: %d, Sex: %s\n", p.name, p.age, p.sex)
fmt.Println(s)

f, _ := os.Create("person.txt")
defer f.Close()
fmt.Fprintf(f, "Name: %s, Age: %d, Sex: %s\n", p.name, p.age, p.sex)

以上代码将结构体数据格式化为一个字符串并输出,以及将数据写入文件中。

在需要输出实现了 String() 方法的类型时,我们可以直接使用 %v 占位符。

type Person struct {
    name string
    age  int
    sex  string
}

func (p Person) String() string {
    return fmt.Sprintf("%s (%d, %s)", p.name, p.age, p.sex)
}

func main() {
    p := Person{name: "Alice", age: 20, sex: "female"}
    fmt.Println(p)
}

以上代码将输出 Alice (20, female)

总结一下,在 Golang 中打印结构变量的数据,我们可以使用 fmt.Printffmt.Sprintffmt.Fprintf 等方法,指定不同的占位符格式化输出数据。此外,在输出实现了 String() 方法的类型时,我们可以直接使用 %v 占位符。