0

反射定律摘录:

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

4

1 回答 1

1

这是一种特殊情况,记录String()reflect.Value. 它指出

fmt 包对 Values 进行了特殊处理。它不会隐式调用它们的 String 方法,而是打印它们持有的具体值。

于 2018-09-24T10:40:02.547 回答