记go和python中的slice一个简单区别
2017-04-16 02:22
816 查看
记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 main import "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]
可以看出来,修改数组,如果切片的值在其中,会被修改;反之,修改切片的值,其基于的数组的值也会被修改。
实际上可以理解为,切片和数组共用同一片内存。
相关文章推荐
- 用Python socket实现一个简单的http服务器(post 与get 的区别)、CGIHTTPServer 简单应用
- 用Python socket 实现一个简单的http服务器(post 与get 的区别)、CGI、WSGI、MVC
- C++ Boost 之Python(一个简单的例子)
- 一个简单的PYTHON代码
- 用python的cmd模块写一个简单的shell
- 一个看似简单的问题(#if与#ifdef的区别)
- 用Python写的一个简单的小说下载器
- IronPython for ASP.NET:使用IronPython创建一个简单的Web页面
- 一个简单的python socket编程
- Python源码分析2 - 一个简单的Python程序的执行
- 搭建一个简单的Python的Web环境
- Python 学习:今天写了一个简单的定时任务
- 简单的计数器。。。。(scanf和getchar()的区别)。。。(一个错误很久没有找出来,最后是一个回车,中文下面的回车,编译不支持)
- 一个简单的使用代理访问百度页面内容的python脚本
- 一个简单的python sqlite wrapper
- Python: python写的一个简单网络词典
- 一个简单的PYTHON代码
- 用python写的一个简单的记事本
- Python源码分析2 - 一个简单的Python程序的执行
- 分享一个简单的python模板引擎