我对 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
}
- 1 回答
- 0 关注
- 438 浏览
添加回答
举报
0/150
提交
取消