记go和python中的slice一个简单区别
来源:互联网 发布:编辑pdf用什么软件 编辑:程序博客网 时间:2024/06/03 10:20
记go和python中的slice区别
python中的slice是在原有基础上拷贝一份。go中的slice则是指向生成它的数组/切片,切最长长度不会超限。
python举例
#数组为1,2,3,4>>> L=[1,2,3,4]#生成一个内容为2,3的切片>>> slice1=L[1:3]>>> print(slice1)[2, 3]#修改其中一个值,查看切片和list的值是否有变化>>> slice1[1]=5>>> print(slice1)[2, 5]>>> print(L)[1, 2, 3, 4]
最后发现单独修改了slice切片,但是list值没有变化,说明生成的slice是生成的一份拷贝,跟原有的list不是相同内存
go举例
package mainimport "fmt"func main() { data := [...]int{0,1,2,3,4,5,6,7,8,9} slice := data[2:4] fmt.Println(slice) fmt.Println(data) data[2] = 666 slice[1] = 999 fmt.Println(slice) fmt.Println(data)}
输出
feiqianyousadeMacBook-Pro:go yousa$ go run slice.go[2 3][0 1 2 3 4 5 6 7 8 9][666 999][0 1 666 999 4 5 6 7 8 9]
可以看出来,修改数组,如果切片的值在其中,会被修改;反之,修改切片的值,其基于的数组的值也会被修改。
实际上可以理解为,切片和数组共用同一片内存。
0 0
- 记go和python中的slice一个简单区别
- go array和slice区别
- Go语言中的 Array, Slice和 Map
- Go语言中的 Array, Slice和 Map
- Go语言中的数组和Slice
- Go语言中的map和slice
- Go语言中的Slice
- go中的slice坑
- Go语言中数组和slice的区别
- Go 语言中的 Array,Slice,Map 和 Set
- Go 语言中的 Array,Slice,Map 和 Set
- [go语言]slice和map
- python中的slice
- [GoLang学习总结]Go语言中的Slice
- 关于go语言中的Slice切片问题
- go slice
- Go-Slice
- go slice
- git学习心得2
- 动态分区分配算法
- jQuery的deferred对象详解
- Java线程:线程栈模型与线程的变量
- Java线程:线程状态的转换
- 记go和python中的slice一个简单区别
- LeetCode137. Single Number II
- 左程云著算法与数据结构题目最优解笔记-位运算
- IOS之C语言--4运算符
- git学习心得3
- IOS之C语言--5控制结构
- 16.PHP_Ajax模拟服务器登录验证
- 459. Repeated Substring Pattern
- clint是windows下的c/c++检查工具……