在 Go 中,reflect.Interface 是哪种值?

j:=1

Kindj就是reflect.Int,符合市场预期。

var j interface{} = 1

Kindj也是reflect.Int

哪个值的种类reflect.Interface


SMILET
浏览 220回答 3
3回答

饮歌长啸

如果您正在寻找实用的解决方案,那么答案既简单又烦人。reflect.TypeOf接受一个空接口类型,您可以在其中放入您想要传递的任何数据。这样做的问题是一个接口类型不能保存另一个接口类型,这意味着你不能有效地将一个接口传递给reflect.TypeOf. 有一个解决方法,但它有点痛苦。您需要做的是创建一个复合类型(如结构或切片或映射),其中元素类型之一是接口类型,然后提取它。例如:var sliceOfEmptyInterface []interface{} var emptyInterfaceType = reflect.TypeOf(sliceOfEmptyInterface).Elem()即首先创建reflect.Type的表示[]interface{}(的切片interface{}的类型),然后提取元素类型,这是interface{}。

慕无忌1623718

到目前为止,答案似乎令人惊讶地令人费解,而问题及其响应实际上很简单:reflect.Interface 是一种接口值。你可以很容易地看到:var v interface{}var t = reflect.ValueOf(&v).Type().Elem()fmt.Println(t.Kind() == reflect.Interface)请注意,这ValueOf(v)是行不通的,因为您需要 v 本身的类型,而不是其内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go