Golang面试官:聊一聊浅拷贝和深拷贝
原创 吃个大西瓜 Coding Big Tree 2024-06-09 08:01 北京 听全文浅拷贝和深拷贝
- 浅拷贝后的对象和源对象是同一个对象,值被修改,原值的数据也会被修改
- 深拷贝后的对象,是一个全新的对象,和源对象没有关系,修改值不会相互影响
浅拷贝示例
package main
import (
"fmt"
)
func main() {
a := []int{1, 2, 3, 4, 5}
// 浅拷贝
b := a
// 修改 b 的第一个元素
b[0] = 100
// 发现 a 的第一个元素也被修改了
fmt.Println(a) // [100 2 3 4 5]
fmt.Println(b) // [100 2 3 4 5]
}
深拷贝示例,使用内建函数copy
实现
package main
import (
"fmt"
)
func main() {
a := []int{1, 2, 3, 4, 5}
// 深拷贝
b := make([]int, len(a))
copy(b, a)
// 修改 b 的第一个元素
b[0] = 100
// 可以看到 a 的值并没有被修改
fmt.Println(a) // [1 2 3 4 5]
fmt.Println(b) // [100 2 3 4 5]
}
公众号回复:
【golang加群】加入golang开发者交流群
【golang资料】获取golang面试刷题资料
golang60 golang · 目录 上一篇面试官:Golang语言中的panic和recover有什么作用?下一篇Golang:bytes 格式和解析数字字节值(10K、2M、3G等) 阅读 272 喜欢此内容的人还喜欢 面试官:Golang语言中的panic和recover有什么作用? 我看过的号 Coding Big Tree 不看的原因- 内容低质
- 不看此公众号内容
- 内容低质
- 不看此公众号内容
- 内容低质
- 不看此公众号内容
人划线
标签:Golang,fmt,golang,Println,go,100,拷贝 From: https://www.cnblogs.com/cheyunhua/p/18243724