登录
首页 >  Golang >  Go问答

Golang 中带有 %v 和 %p 的指针的零值

来源:stackoverflow

时间:2024-04-08 15:42:35 180浏览 收藏

你在学习Golang相关的知识吗?本文《Golang 中带有 %v 和 %p 的指针的零值》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我混淆了指针的 %p 和 %v 格式动词提供的输出

var a *int
// zero value of a is:
fmt.Printf("%v", a) // 
// using %p 
fmt.Printf("%p", a) // 0x0

我们知道 %v 使用 %p 作为默认格式化程序,那么为什么 %v 显示 作为输出?

未初始化指针的零值是,那么为什么%p输出0x0呢?

根据 go 文档,%p 使用以 0x 开头的基数 16 表示法,如果是这样,0x0 是否相同?


正确答案


  1. v 是通用值动词,它将 nil 指针打印为 因为这作为通用格式最有意义。请注意其描述中的“默认”一词:它使用 p 作为默认,而不是无条件地使用。

  2. p 打印指针值,从而将 nil 指针打印为 0x0。请注意,pv 是不同的动词。

  3. 是的,nil 指针为 0。但请注意,字符串 0x0 不是“相同”。

(提示:通过尝试巧妙地使用 fmt.Printf 来学习东西是非常困难的,因为它包含很多(合理的)魔法。)

今天关于《Golang 中带有 %v 和 %p 的指针的零值》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>