为了账号安全,请及时绑定邮箱和手机立即绑定

当 golang 将 struct 转换为 interface{} 时发生了什么?费用是多少?

当 golang 将 struct 转换为 interface{} 时发生了什么?费用是多少?

Go
吃鸡游戏 2022-01-17 18:12:29
我对 interface{} 类型感到困惑,如何从 Person 结构构建 interface{} 对象?如果结构很大,转换成本是否昂贵type Person struct {    name string    age  int  } func test(any interface{}) {  } func main() {      p := Person{"test", 11}    // how to build an interface{} object from person struct?     // what is the cost? the field need copy?    test(p) }
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

Interface{} 是一种类型。它由两部分组成:基础类型和基础价值。大小无关紧要。成本是每次转换它或转换它时,都会产生成本。尺寸效应的一件事是从结构复制到接口底层值期间的值。但是这个成本类似于你分配给一个结构或复制到一个结构时得到的成本。接口的额外成本不受大小的影响。


你不需要那个函数来转换,你可以像这样转换它:


func main() {

    p := Person{"test", 11}

    // how to build an interface{} object from person struct?

    // what is the cost? the field need copy?

    var v interface{}

    v = p    

}


查看完整回答
反对 回复 2022-01-17
  • 1 回答
  • 0 关注
  • 438 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信