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

我对 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) 

}


吃鸡游戏
浏览 439回答 1
1回答

翻过高山走不出你

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    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go