登录
首页 >  Golang >  Go问答

为什么Go中的反射值与接口相同?

来源:stackoverflow

时间:2024-03-08 08:09:24 327浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《为什么Go中的反射值与接口相同?》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

摘自反射定律:

(为什么不fmt.println(v)?因为v是一个reflect.value;我们想要 它所具有的具体价值。)

这让我很困惑,因为以下代码:

var x float64 = 3.4
var 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.4 x的值的接口是:3.4

是因为fmt内部找到了反射v的具体值吗?


解决方案


这是一个特殊情况,记录在 reflect.ValueString() 方法中。它指出

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

今天关于《为什么Go中的反射值与接口相同?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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