Go语言学习笔记(四) [array、slice、map]
2、创建一个slice:sl := make([]<type>,len,cap),cap值可以省略(省略时,值等同于len),len表示存放元素的个数,cap表示容量。容量的大小cap =< real_cap < 2 * cap,当大小超过容量cap时,会容量会自动升级,但是必须说明的是,自动升级后,将会重新分配连续的内存地址。
a := [6] int {1,2,3,4,5,6} //数组下标从0开始s1 := a[0:4] //1,2,3,4s2 := a[:] //1,2,3,4,5,6,是a[0:len(a)]的简写s3 := a[:3] //1,2,3,是a[0:3]的简写//s4 := a[1:7] //数组越界,抛出invalid slice index 7 (out of bounds for 6-element array)s5 := s2[:] //1,2,3,4,5,6,此时的s5和s2依然指向a,可通过内建函数println(slice)打印出结果对比。s6 := [] int {1}s7 := append(s6,2)s8 := append(s7,2,2,3,3)//s9 := append(s7,s6...) //注意这后面有三个点,不加上的话会报类型错误。我开始还以为是省略号,纠结了半天。var ar = [...] int {1,2,3,5,6,7}n1 := copy(s10,ar[0:]) //返回结果 n1=6,此时 s10的值为[1 2 3 5 6 7]n2 := copy(s10,s10[2:]) //返回结果 n2=4,此时 s10的值为[3 5 6 7 6 7]关于slice容量扩容重新分配内存地址的问题也没有完全弄明白,以后再补充进来吧。
Go语言学习笔记(四) [array、slice、map]的更多相关文章
- Go语言学习笔记四: 运算符
Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...
- 【GO】GO语言学习笔记四
流程控制 1.条件语句 举个栗子: if x>5 { return 1; }else{ return 0; } 注意: 条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句, ...
- [C语言学习笔记四]变量与系统的交互
使用 const 创建常量和使用 volatie 优化变量 C语言中使用 const 定义常量. 例如: const INT a = 10; 此处如果添加a = 20;,编辑器则会报错,因为此处 a ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
- Go语言学习笔记十一: 切片(slice)
Go语言学习笔记十一: 切片(slice) 切片这个概念我是从python语言中学到的,当时感觉这个东西真的比较好用.不像java语言写起来就比较繁琐.不过我觉得未来java语法也会支持的. 定义切片 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
- Go语言学习笔记六: 循环语句
Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...
- 【Go语言学习笔记】为什么要选择Go语言
一门语言的兴起一定有他的原因,所谓天下苦Java久矣,Go的到来可以说很多后端开发的福音,尤其是在微服务.分布式这么火的今天,那么,他的优势到底是什么呢? 首先,我们需要现有后端语言的优势痛点: 其实 ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
随机推荐
- mongoDB根据_id进行查询
var ObjectID = require('mongodb').ObjectID; whereStr = {_id:ObjectID(req.body._id)}
- Python开发——9.面向对象编程
一.面向对象设计(Object oriented design) 面向对象设计是将一类具体事物的数据和动作整合到一起的过程,不会要求面向对象语言编程,但如果想要构造具备对象性质和特点的数据类型,需要更 ...
- CSS3新增特性及知识学习线路
- python 队列结合线程的使用
from queue import Queue from threading import Thread import time q = Queue() def add_to_queue(): for ...
- 手机端-万种bt在线观看器,安卓正版下载!
安卓正版下载, 点击下载 无广告,完全免费!寻找任何你想要的资源!
- 更改MySQL/Postgresql密码
Parrot包括几个SQL引擎,但是当它们被预先安装时,默认密码未被配置,并且拒绝访问其root用户. 重新配置Mysql / Mariadb密码 停止MySQL服务. sudo service my ...
- windows mysql zip 安装
https://www.cnblogs.com/iathanasy/p/8461429.html
- 1.准备工作之Groovy
Groovy(读做:gu : ru : wei) Groovy是一种运行在jvm上的动态语言,它吸取了Python.Ruby和SmallTalk等语言的优点:在Java的基础之上增加了许多特色功能,相 ...
- c++中的const与指针
const修饰符 使用const修饰变量时,该变量的值不可修改,因此需要初始化. 例如 const int s = 0: 此时s为值不可变的变量. 那么基于此,当const修饰指针时的情况有三种: ( ...
- 利用java解压,并重命名
由于工作需要,写了一个小工具,利用java来解压文件然后对文件进行重命名 主要针对三种格式,分别是zip,rar,7z,经过我的多次实践我发现网上的类库并不能解压最新的压缩格式 对于zip格式: ma ...