面试题答案
一键面试- 方式一:
- 赋值过程:首先创建了一个
Person
结构体实例p1
,然后通过值拷贝的方式将p1
赋值给p2
。 - 性能分析:当结构体
Person
比较小(如当前只有Name
字符串和Age
整数)时,值拷贝的开销相对较小。因为只是简单地将内存中的数据从一处复制到另一处。但是,如果Person
结构体变得复杂,比如包含大量的字段或者大的数组、切片等,值拷贝会导致较大的性能开销,因为需要复制整个结构体的所有数据。
- 赋值过程:首先创建了一个
- 方式二:
- 赋值过程:首先创建了一个指向
Person
结构体实例的指针p1
,然后将这个指针p1
赋值给p2
。 - 性能分析:指针赋值只是复制一个指针(在64位系统上通常是8字节,在32位系统上通常是4字节),无论结构体
Person
本身有多大,指针赋值的开销基本固定且非常小。
- 赋值过程:首先创建了一个指向
总结:
- 当
Person
结构体较小时,两种方式性能差异不大。 - 当
Person
结构体较大时,方式二(使用指针赋值)性能更优,因为避免了大量数据的拷贝。