包虫病

首页 » 常识 » 常识 » Go小知识vvv的区别
TUhjnbcbe - 2021/5/24 20:45:00
查看注释

在Go语言的源码当中,很多函数都有很清晰的注释,告诉我们使用方法和注意事项,我们应该养成经常阅读源码的习惯,清楚了底层的实现原理,日常开发中碰见的很多问题自然就会迎刃而解了。

关于fmt.Printf()函数提供了很多像C语言一样的占位符,由于关于占位符的描述信息太多了,Go语言开发者们并没有将描述信息直接放在fmt.Printf()函数的实现旁边,而是单独写了一个注释文件,用于解释占位符信息,具体的位置在srcfmtdoc.go当中:

我们展开这个文件内容,可以看到关于%v、%+v和%#v的描述信息:

%vthevalueinadefaultformat      

whenprintingstructs,theplusflag(%+v)addsfieldnames

%#vaGo-syntaxrepresentationofthevalue

翻译过来就是:

%v:会以默认形式打印值,当打印结构体的时候,"+"会打印字段名称。

%#v:值的Go语法表示法

代码测试

可能直接看解释有点模糊,我们直接写一段代码进行测试便清楚了:

packagemainimport"fmt"typestudentstruct{namestringidint}funcmain(){s:=student{"jiafu",}fmt.Printf("%%v的方式=%v\n",s)fmt.Printf("%%+v的方式=%+v\n",s)fmt.Printf("%%#v的方式=%#v\n",s)}

输出结果如下:

%v的方式={jiafu}%+v的方式={name:jiafuid:}%#v的方式=main.student{name:"jiafu",id:}

总结

%v只输出所有的值

%+v先输出字段类型,再输出该字段的值

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

预览时标签不可点收录于话题#个上一篇下一篇
1
查看完整版本: Go小知识vvv的区别