接口如何代表Golang中的任何类型

据说可以interface{}代表Go中的任何类型。例如,让我们考虑一个Marshal函数,encoding/json该函数用于将Go数据结构转换为JSON字符串。它的定义是


func Marshal(v interface{}) ([]byte, error) 

但是我们将一个结构作为参数传递给它,如下所示。


type hello struct{

   Message string

}

data,err:= json.Marshal(hello{Message:'Hello world'})

Go如何处理呢?


跃然一笑
浏览 226回答 1
1回答

MMMHUHU

答案是运行时反射。从文档:包反射实现了运行时反射,从而允许程序处理任意类型的对象。典型的用法是使用静态类型interface {}获取值,并通过调用TypeOf来提取其动态类型信息,该类型将返回Type。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go