登录
首页 >  Golang >  Go问答

用 Golang 中的接口表示任意类型

来源:stackoverflow

时间:2024-03-14 15:09:24 200浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《用 Golang 中的接口表示任意类型》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

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

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

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

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

go 是如何处理这个问题的?


解决方案


答案是运行时反射。

来自docs

包reflect实现了运行时反射,允许程序操作任意类型的对象。典型的用途是通过静态类型interface{}获取一个值,并通过调用TypeOf提取其动态类型信息,TypeOf返回一个Type。

以上就是《用 Golang 中的接口表示任意类型》的详细内容,更多关于的资料请关注golang学习网公众号!

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