为了账号安全,请及时绑定邮箱和手机立即绑定

在go中,为什么打印出来的reflected value和它的interface一样?

在go中,为什么打印出来的reflected value和它的interface一样?

Go
肥皂起泡泡 2023-04-10 10:36:06
反射法则摘录:(为什么不是 fmt.Println(v)?因为 v 是一个 reflect.Value;我们想要它所持有的具体值。)这让我感到困惑,因为以下代码:var x float64 = 3.4var v = reflect.ValueOf(x)fmt.Println("value of x is:", v)y := v.Interface().(float64) // y will have type float64.fmt.Println("interface of value of x is:", y)打印相同的输出:x 的值为:3.4x值的接口是:3.4是因为fmt在内部找到反映的具体价值吗v?
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

这是一个特例,记录在String()的方法上reflect.Value。它指出

fmt 包特别对待值。它不会隐式调用它们的 String 方法,而是打印它们持有的具体值。


查看完整回答
反对 回复 2023-04-10
  • 1 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信