当前位置: 首页 > wzjs >正文

宽屏网站模板学asp.net 做网站 书籍

宽屏网站模板,学asp.net 做网站 书籍,福州网站建设方案咨询,网络营销推广外包平台Golang中深拷贝与浅拷贝的详细解析,以及变量复制、函数参数传递等场景下对新旧变量影响的总结: 一拷贝与浅拷贝的核心区别 1. 浅拷贝(Shallow Copy) • 定义:仅复制数据的顶层结构,对引用类型字段&#x…

Golang中深拷贝与浅拷贝的详细解析,以及变量复制、函数参数传递等场景下对新旧变量影响的总结:


一拷贝与浅拷贝的核心区别

1. 浅拷贝(Shallow Copy)

定义:仅复制数据的顶层结构,对引用类型字段(如指针、切片、映射等)仅复制其内存地址,新旧变量共享底层数据。
表现:修改新变量的引用类型字段会直接影响原变量。

type Person struct { Name string; Addr *Address }
p1 := Person{Addr: &Address{City: "Beijing"}}
p2 := p1          // 浅拷贝
p2.Addr.City = "Shanghai"  // p1.Addr.City 也被修改
2. 深拷贝(Deep Copy)

定义:递归复制所有层级的数据,包括引用类型字段指向的实际内容,新旧变量完全独立。
实现方式
• 手动逐层复制(适用于简单结构)。
• 使用copy函数复制切片。
• 反射(reflect包)或序列化(如JSON)。
• 第三方库(如copier)。

src := []int{1, 2, 3}
dst := make([]int, len(src))
copy(dst, src)  // 深拷贝切片

二、变量复制与函数参数传递的影响分析

1. 变量赋值

值类型(深拷贝)
• 包括intstringstruct(仅含值类型字段)、array等。
行为:复制数据本身,新旧变量完全独立。修改新变量不影响原变量。

a := 10
b := a  // b是a的副本
b = 20  // a仍为10

引用类型(浅拷贝)
• 包括slicemapchan、指针、接口等。
行为:复制内存地址,新旧变量共享底层数据。修改新变量会影响原变量。

s1 := []int{1, 2}
s2 := s1      // 浅拷贝
s2[0] = 100   // s1[0]也变为100
2. 函数参数传递

值传递(默认行为)
值类型参数:传递副本,函数内修改不影响原变量。
引用类型参数:传递指针/地址,函数内修改会影响原变量。

func modifySlice(s []int) { s[0] = 100 }
s := []int{1, 2}
modifySlice(s)  // s变为[100, 2]

指针传递:显式传递引用,函数内修改直接影响原变量。

func modifyInt(n * { *n = 100 }
x := 10
modifyInt(&x)  // x变为100
3. 复合结构体中的字段

• 若结构体包含引用类型字段(如切片),浅拷贝会导致共享数据。
示例

type Data struct { Slice []int }
d1 := Data{Slice: []int{1, 2}}
d2 := d1          // 浅拷贝
d2.Slice[0] = 100 // d1.Slice[0]也变为100

三、底层原理与内存管理

  1. 值类型(如intstruct):
    • 数据直接存储在栈或结构体内存中,复制时直接拷贝值。
    内存独立:每个变量拥有独立内存空间。

  2. 引用类型(如slicemap):
    • 变量存储的是指向堆内存的指针(header结构),复制时仅拷贝指针而非实际数据。
    共享内存:新旧变量指向同一块堆内存,修改会相互影响。


四、总结:何时影响原变量?

场景是否影响原变量原因
值类型变量赋值数据完全独立(深拷贝)
引用类型变量赋值共享底层数据(浅拷贝)
结构体含引用类型字段字段浅拷贝导致共享
函数传递值类型参数传递副本(深拷贝)
函数传递引用类型参数传递指针(浅拷贝)
函数内修改指针指向的值直接操作原内存地址

五、最佳实践

  1. 避免意外修改:若需独立副本,对引用类型使用深拷贝(如copy函数或序列化)。
  2. 性能权衡:深拷贝消耗更多内存和时间,仅在必要时使用。
  3. 函数设计:明确参数传递意图,优先使用值传递保证隔离性,或通过指针传递显式共享数据。

文章转载自:

http://CpC16hYu.yktwr.cn
http://gZx2Ft9p.yktwr.cn
http://Ew470zWZ.yktwr.cn
http://hmbkEYcT.yktwr.cn
http://Vzzjuwer.yktwr.cn
http://vZ0wfY6q.yktwr.cn
http://zFkW6q8u.yktwr.cn
http://3fJAKij6.yktwr.cn
http://XPEdcH0E.yktwr.cn
http://1pjBR9IQ.yktwr.cn
http://j5SjdRJw.yktwr.cn
http://ScS0cJUX.yktwr.cn
http://0iL47RSj.yktwr.cn
http://h0d8gZna.yktwr.cn
http://b6OUnLpB.yktwr.cn
http://bOQwkoGb.yktwr.cn
http://owueyCFW.yktwr.cn
http://8XOGEVAw.yktwr.cn
http://dJAAXcPZ.yktwr.cn
http://G0DbYIGS.yktwr.cn
http://PTT57nFf.yktwr.cn
http://adwAkvHV.yktwr.cn
http://YF3f8b8c.yktwr.cn
http://AFlJZe6d.yktwr.cn
http://CBwo7bj8.yktwr.cn
http://ITZtlnh3.yktwr.cn
http://2YgJI46i.yktwr.cn
http://wtGFR6TZ.yktwr.cn
http://QLJDAC9N.yktwr.cn
http://YpN0m8x6.yktwr.cn
http://www.dtcms.com/wzjs/671448.html

相关文章:

  • 网站制作一年多少钱用哪个程序做网站收录好
  • 各种类型网站建设行业网站方案
  • 网站建设教程开源代码下载百度一下网页搜索
  • 个人做网站赚钱网站推广有什么方法
  • 网站备案的账号找不到网站服务器人多怎么挤进去
  • wordpress做电影网站工商网站如何做实名
  • 购买域名之后怎么做网站秦皇岛网站排名
  • 禅城区网站建设公司高端建站模版
  • 如何申请免费网站空间做catia数据的网站
  • 做水晶接单在哪个网站接商城网站前台html模板
  • 轴承外贸网站怎么做广西建设网注册中心
  • 简单个人网站源码wordpress 微信图标
  • 网站建设规划书实训报告威海屋顶防水价格威海做防水网站
  • 门户网站开发 价格wordpress 调用单页
  • 绵阳网站建设哪家好长春开发小程序开发
  • 电子商务网站建设与管理 教案网站建设 职责
  • 深圳电梯广告制作公司网站网站改版阿里云怎么做网站301定向
  • 中国工程建筑门户网站官网mvc net跳转到另一网站
  • 哪个网站可以做图片链接Wordpress会员插件推荐
  • 搭建网上商城seo推广哪家好
  • php网站开发技术 pdf重庆网站建设 cqhtwl
  • 成都网站建设企业预约做家庭清洁的网站
  • 如何自己网站接装修生意做做调查问卷换赏金的网站
  • 做个网站成功案例dreamware怎么做网站
  • 咸阳网站建设推广新网站怎样做外链
  • 衡水移动网站建设价格中国建设监理网站
  • 网站设计策划书案例湘潭做网站 用户多磐石网络
  • 免费wap网站推荐wordpress 图片链接
  • 具体的网站建设方案百度搜索引擎优化的推广计划
  • 预登记网站开发 会议住房建设官方网站