Go切片基础
package main import "fmt" //切片(Slice)本身没有数据,是对底层Array的一个view
//不使用指针就可以改数组内容
//slice可以向后扩展,但是不可以向前扩展
//s[i]不可以超越len(s),s[:]向后扩展不可以超越底层数组Cap(s)
//添加元素时如果超越Cap,系统会重新分配更大的底层数组 func updateSlice( s []int){ //s不加长度代表切片
s[] =
} func main() {
arr := [...]int{ , , , , , , , }
fmt.Println("arr[2:6] = ", arr[:]) //[2 3 4 5]
fmt.Println("arr[:6] = ", arr[:]) //[0 1 2 3 4 5]
s1 := arr[:]
fmt.Println("arr[2:] = ", s1) //[2 3 4 5 6 7]
s2 := arr[:]
fmt.Println("arr[:] = ", s2) //[0 1 2 3 4 5 6 7] //修改切边内容
updateSlice(s1)
fmt.Println(s1) //[100 3 4 5 6 7]
fmt.Println(arr) //[0 1 100 3 4 5 6 7] updateSlice(s2)
fmt.Println(s2) //[100 1 100 3 4 5 6 7]
fmt.Println(arr) //[100 1 100 3 4 5 6 7] //再次切片
s2 = s2[:]
fmt.Println(s2) //[100 1 100 3 4]
s2 = s2[:]
fmt.Println(s2) //[100 3 4] //slice扩展
arr[], arr[] = , //把值改回去
s1 = arr[:]
s2 = s1[:]
fmt.Println(s1) //[2 3 4 5]
fmt.Println(s2) //[5 6]
//6在s1中并没有,为什么可以取出来呢?
//slice可以向后扩展,但是不可以向前扩展
fmt.Printf("len(s1)=%d, cap(s1)=%d\n", len(s1),cap(s1)) //4,6
// fmt.Println( s1[3:7]) 出错
//fmt.Println( s1[4]) 出错
fmt.Printf("len(s2)=%d, cap(s2)=%d\n", len(s2),cap(s2)) //2,3 //向slice添加元素
fmt.Println(arr) //[0 1 2 3 4 5 6 7]
s3 := append(s2, )
s4 := append(s3, )
s5 := append(s4, )
fmt.Println(s2) //[5 6]
fmt.Println(s3) //[5 6 10]
fmt.Println(s4) //[5 6 10 11]
fmt.Println(s5) //[5 6 10 11 12]
fmt.Println(arr) //[0 1 2 3 4 5 6 10] 把7改为了10
}
Go切片基础的更多相关文章
- Go语言之数组与切片基础
一.数组 数组是同一类型元素的集合,可以放多个值,但是类型一致,内存中连续存储 Go 语言中不允许混合不同类型的元素,而且数组的大小,在定义阶段就确定了,不能更改 1.数组的定义 // 定义一个大小为 ...
- 【转】10.4新特性-ArcGIS 10.4矢量切片介绍
原文地址:http://zhihu.esrichina.com.cn/article/567 1.矢量切片简介GIS的底图一直使用金字塔技术进行切图,使用户能够快速访问指定级别的地图或者影像.但是切图 ...
- <4>Python切片功能剖析
引用文章:https://mp.weixin.qq.com/s/NZ371nKs_WXdYPCPiryocw 切片基础法则: (1)公式,禁止0. (2)i, n同号:从序列的第i位索引起,向右取n- ...
- SQL开发测试使用基础
目录 一.客户端配置与使用 1.oracle(PLSQL Developer) 2.hive(hive cli)及命令 3.postgre(pgAdmin) 二.注意事项及基础 ...
- golang slice 切片原理
golang 中的 slice 非常强大,让数组操作非常方便高效.在开发中不定长度表示的数组全部都是 slice .但是很多同学对 slice 的模糊认识,造成认为golang中的数组是引用类型,结果 ...
- Python Numpy基础教程
Python Numpy基础教程 本文是一个关于Python numpy的基础学习教程,其中,Python版本为Python 3.x 什么是Numpy Numpy = Numerical + Pyth ...
- 『GoLang』数组与切片
数组 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构):这种类型可以是任意的原始类型例如整型.字符串或者自定义类型. 数组长度必须是一个常量表达式,并且必须是一个非负 ...
- 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片
概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...
- 【Go入门教程2】内置基础类型(Boolean、数值、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值
这小节我们将要介绍如何定义变量.常量.Go内置类型以及Go程序设计中的一些技巧. 定义变量 Go语言里面定义变量有多种方式. 使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型 ...
随机推荐
- 用css来修饰页面文本
<html> <head> <title>修饰文本字体</title> <style type="text/css"> ...
- 通用maper无法获取实体类com.qmtt.model.PhWxUser对应的表名问题
spring boot在采用了热加载后,可能会出现“无法获取实体类com.qmtt.model.PhWxUser对应的表名!”的异常, 解决办法 在resources新建一个文件夹META-INF,新 ...
- mac上的应用提权
一个mac上的app需要在/Applications/My.app/Contents/MacOS路径下创建一个配置文件,在开启root权限的账户下运行时ok,但是在没有开启root权限的账户下运行时, ...
- Redis学习笔记(二)字符串进阶
1.增减操作 字符串可以储存字节串.整数.浮点数三种类型的值,如果值无法被解释为十进制的整数或浮点数,那么对此值进行增减操作会返回错误,如果对一个不存在的或者保存了空串的键进行增减操作,Redis将当 ...
- 关于ie的内存泄漏与javascript内存释放
最近做一个公司的业务系统,公司要求能尽可能的与c/s近似,也就是如c/s一样,点击文本框可以弹出此项目的相关内容,进行选择输入. 我使用了弹出窗口,然后在子窗口双击选中项目,把选中的值返回给父 ...
- H3C S5024P交换机 H3C AR28-31路由器命令
H3C S5024P交换机 H3C AR28-31路由器命令 交换机命令 各个视图的切换: 注意命令要在相应的视图下执行 在用户视图下键入quit命令可以断开与交换机的连接.在其它视图中键入quit命 ...
- 如何开发 Laravel 扩展包并发布到 Composer
如何开发 Laravel 扩展包并发布到 Composer 发布于 2019-01-22 cxp1539 1074 Vie 开发扩展包 我们来做一个根据第一个字符或者汉字生成头像的larave ...
- JavaScript-基础类型和运算符
JavaScript-基础类型和运算符 P02.稍微了解 1.js代码需要编写到script标签中 <script type="text/javascript"> 此处 ...
- docker 镜像管理操作
镜像特点 1. 分层存储的文件 2.一个软件运行环境 3.一个镜像可以创建多个容器 4.一种标准交付 5.不包含Linux内核而又精简的Linux操作系统 6.不是一个单一的文件而是由多层构成的,可以 ...
- CAD交互绘制带周长面积的矩形框(网页版)
主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE dY1 直线的开始点y坐标 DOUBLE ...