首页 > 其他 > 详细

值拷贝 与 引用拷贝 的区别

时间:2021-04-15 23:46:31      阅读:33      评论:0      收藏:0      [点我收藏+]

 

map,slice,chan 是引用拷贝;

其余的,都是 值拷贝

 

 

 值拷贝:

接收的是  整个array的值拷贝,所以方法对array中元素的重新赋值不起作用。

package main  
  
import "fmt"  
  
func modify(a [3]int) {  
    a[0] = 4  
    fmt.Println("modify",a)             // modify [4 2 3]
}  
  
func main() {  
    a := [3]int{1, 2, 3}  
    modify(a)  
    fmt.Println("main",a)                  // main [1 2 3]
}  

 

 

 

 引用拷贝:

函数的引用拷贝与原始的引用指向同一个数组,所以对数组中元素的修改,是有效的

package main  
  
import "fmt"  
  
func modify(s []int) {  
    s[0] = 4  
    fmt.Println("modify",s)          // modify [4 2 3]
}  
  
func main() {  
    s := []int{1, 2, 3}  
    modify(s)  
    fmt.Println("main",s)              // main [4 2 3]
}

 

值拷贝 与 引用拷贝 的区别

原文:https://www.cnblogs.com/yizhixiaowenzi/p/14664222.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!