go语言数组的拷贝

go语言的数组与c语言的数据有一点不太一样的地方,go语言的赋值是值拷贝

package main  
 
import "fmt"  
 
func main() {  
    var ages [4]int = [4]int{1, 2, 3, 5}  
    var b = ages  
    b[0]++  
    fmt.Println(ages)  
    fmt.Println(b)  
}  

输出的结果是:

[1 2 3 5]


[2 2 3 5]

要想使ages改变时,b也跟着改变可以使用指针

package main  
import "fmt"  
func main() {  
    var ages [4]int = [4]int{1, 2, 3, 5}  
    var b = &ages  
    b[0]++  
    fmt.Println(ages)  
    fmt.Println(*b)  
}  

输出结果:

[2 2 3 5]


[2 2 3 5]

也可以使用切片,因为数组切片的本质就是指向数组的指针

package main  
import "fmt"  
func main() {  
    var ages []int = []int{1, 2, 3, 5}  
    var b = ages  
    b[0]++  
    fmt.Println(ages)  
    fmt.Println(b)  
}  

输出结果:

[2 2 3 5]


[2 2 3 5]

注:切片与切片之间的赋值,为值的复制

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-07-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏gaoqin31

jQuery源码浅析

如果说php是世界上最好的语言,那么javascript无疑可以称为世界上最飘逸的语言,最近看了下jQuery的源码,实现了一个简陋的jQuery。我觉得要看懂...

24330
来自专栏柠檬先生

jquery 筛选元素 (3)

.addBack()   添加堆栈中元素集合到当前集合中,一个选择性的过滤选择器。   .addBack([selector]) ...

21470
来自专栏吴裕超

js行内式遇到的一些问题 DOM对象和jq对象转换的问题

这两天给后台页面做页面,我的工作比较简单,只需要写结构和样式就行了,写好之后,后端大哥用ajax重写页面加载数据,顺便给标签添加选中事件,做选中后变色的处理,但...

32050
来自专栏柠檬先生

jquery属性值选择器

$("[attribute|='value']") 选择指定属性值等于给定字符串或改字符串为前缀(该字符串后跟一个连字符“-”)的元素。 attribut...

23560
来自专栏河湾欢儿的专栏

css3选择器

属性选择器 E[attr]只使用属性名,但没有确定任何属性值 E[type="text"]指定属性名,并指定了该属性的属性值 E[attr~="value...

11820
来自专栏老司机的技术博客

golang学习笔记10:数组切片Slice

10120
来自专栏Golang语言社区

厚土Go学习笔记 | 20. slice 继续

slice是一个序列的值,可以根据序列号来访问。可以使用 len(s) 返回 slice s 的长度。 写一个例子,利用 for 循环,打印出 slice 的每...

364140
来自专栏深度学习之tensorflow实战篇

go println与printf区别

Println 与Printf 都是fmt 包中的公共方法 Println :可以打印出字符串,和变量; Printf : 只可以打印出格式化的字符串,可以输出...

29740
来自专栏Golang语言社区

【Golang语言社区--基础篇】Go 语言切片(Slice)

Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组...

389110
来自专栏天天

childNodes属性和nodeType属性

19740

扫码关注云+社区

领取腾讯云代金券