跳到主要内容

Go 的v v v 有什么区别

· 阅读需 1 分钟
素明诚
Full stack development

这里的 v 代表的是 “value”

%v

最基本的格式占位符,用于以默认的方式输出变量的值对于大多数变量类型来说,%v 会输出值的自然形式

%+v

对于结构体(struct)来说,%+v 不仅会输出结构体的值,还会包括结构体的字段名这对于调试或显示更详细的信息是非常有用的

%#v

这个格式占位符会输出值的 Go 语法表示也就是说,输出的格式可以直接作为源代码片段使用这对于调试复杂的数据结构特别有用,因为它可以展示如何使用代码来重建当前的值

这三者的区别如下

package main

import (
"fmt"
)

type Person struct {
Name string
Age int
}

func main() {
p := Person{"John Doe", 30}
fmt.Printf("Using %%v: %v\n", p)
fmt.Printf("Using %%+v: %+v\n", p)
fmt.Printf("Using %%#v: %#v\n", p)
}

输出是

Using %v: {John Doe 30}
Using %+v: {Name:John Doe Age:30}
Using %#v: main.Person{Name:"John Doe", Age:30}

不同的格式占位符对于输出格式有着明显的影响,特别是在处理结构体时