1 最后由 cz (2022-06-24 17:27:44) 编辑

主题: golang的%v、%+v、%#v

%v 只输出所有的值
%+v 先输出字段类型,再输出该字段的值
%#v 先输出结构体名字值,再输出结构体(字段类型+字段的值)

package main

import "fmt"

type student struct {
    name string
    id int
}

func main() {
    s := &student{"jiafu", 123456}
    fmt.Printf("%%v的方式  = %v\n", s)
    fmt.Printf("%%+v的方式 = %+v\n", s)
    fmt.Printf("%%#v的方式 = %#v\n", s)
}

输出结果如下:
%v的方式  = &{jiafu 123456}
%+v的方式 = &{name:jiafu id:123456}
%#v的方式 = &main.student{name:"jiafu", id:123456}

这些属于golang特色占位符,详见https://pkg.go.dev/fmt