烽云社区

 找回密码
 立即注册
搜索
热搜: 烽火
查看: 1617|回复: 2

来自java程序员对于go中slice的提问

[复制链接]

2

主题

5

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2018-5-8 07:03:51 | 显示全部楼层 |阅读模式
对于go中的slice很不能理解,为什么要有一下这种操作
a := []int
a = append(1)
看了下网上的解释,说slice可以理解成一个封装了底层数组和len和cap的结构体,既然如此,如果append超出了cap,底层重新创建了一个新的数组,那就在下面用新的数组替换掉结构体里的数组不好吗,为什么要把整个结构体都替换掉
直接append(1)这样的语法不会更简单美好吗?
回复

使用道具 举报

0

主题

1

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2018-5-8 07:04:16 | 显示全部楼层
这个话题适合去知乎
回复

使用道具 举报

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2018-5-8 07:04:38 | 显示全部楼层
你这语法都错了吧 a = append(a, 1)
结构体并没有替换掉  你打印这个地址还是一样的  只是数据的地址换了  其实和C++的vector是类似的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|烽云社区

GMT+8, 2020-8-14 13:24 , Processed in 0.081999 second(s), 5 queries , File On.

快速回复 返回顶部 返回列表