猿问

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

反射法则摘录:

(为什么不是 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


肥皂起泡泡
浏览 314回答 1
1回答

皈依舞

这是一个特例,记录在String()的方法上reflect.Value。它指出fmt 包特别对待值。它不会隐式调用它们的 String 方法,而是打印它们持有的具体值。
随时随地看视频慕课网APP

相关分类

Go
我要回答