📅  最后修改于: 2023-12-03 15:24:10.743000             🧑  作者: Mango
在 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.Printf
、fmt.Sprintf
、fmt.Fprintf
等方法,指定不同的占位符格式化输出数据。此外,在输出实现了 String()
方法的类型时,我们可以直接使用 %v
占位符。