数组

数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。虽然数组元素可以被修改,但是数组长度是固定的,而且在go语言中数组的长度也是数组类型的组成部分,所以不同长度或不同类型的数据组成的数组都是不同的类型,因而在go语言中很少使用数组。

slice

slice(中文翻译叫:切片),slice在go语言中不是数组,但其底层数据对应的数据类型是数组,不过每个切片还包含了独立的长度len和容量信息cap,可以看做是一个结构体

type slice struct {
array unsafe.Pointer //存放数据的数组指针
len int //长度
cap int //容量
}





// 下面是查看扩容倍数的一个小方法
func coef_cap() {
a :=make([]int,0,5) // 初始化构造一个 容量为5 长度为0的切片
preCap := cap(a)
for i := 0; i < 1000; i++ {
a = append(a, i) // 往a切片里面添加元素
currCap := cap(a)
if currCap>preCap{ // 判断当前切片长度是否超出容量,超出容量就会扩容
fmt.Printf("上一个cap %d --> 当前cap %d\n",preCap,currCap) // 打印上一个没扩容前的容量,和扩容后的容量
preCap = currCap
}
}
}

浅谈一下go语言中的slice及其一些小坑的更多相关文章

  1. Go语言中的slice

    Go语言中的slice有点类似于Java中的ArrayList,但在使用上更加灵活,先通过下面一个小例子来体验一下如何通过一个已有的切片来产生一个新切片: func main() { slice := ...

  2. C语言中 scanf 和 printf 的小要点

    1 scanf_s需指定%c 个数 h short l long关键字 * 不赋给任何值 W 指定读入宽度 转换字符 a 读浮点值(c99) A 读浮点值(c99) c 读单字符 d 读十进制数 i ...

  3. go语言中goroute使用:=遇到的坑

    先看下源代码,预想从1至N总取出所有能被a或b整除的正整数之和,为了利用go语言的并行优势,特使用goroute特性来实现,同时使用普通顺序计算进行效率比较分析 package chango impo ...

  4. Go语言中slice使用注意事项

    Go 语言中的slice类型可以理解为是数组array类型的描述符,包含了三个因素: 指向底层数组的指针 slice目前使用到的底层数组的元素个数,即长度 底层数组的最大长度,即容量 因此当我们定义一 ...

  5. 浅谈自底向上的Shell脚本编程及效率优化

    作者:沐星晨 出处:http://blog.csdn.net/sosodream/article/details/6276758 浅谈自底向上的Shell脚本编程及效率优化 小论文,大家多批评指导:) ...

  6. 浅谈Java语言中try{}catch{}和finally{}的执行顺序问题

    浅谈Java语言中try{}catch{}和finally{}的执行顺序问题 2019-04-06  PM  13:41:46  1. 不管有没有出现异常,finally块中代码都会执行: 2. 当t ...

  7. 浅谈Java语言中ArrayList和HashSet的区别

    Java语言中ArrayList和HashSet的区别 2019-04-10   13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...

  8. 浅谈C语言和C++中“类”的区别

    在C语言中,没有“类”的概念,但是可以由结构体struct构造出我们所需要的数据类型,struct可以组合不同的数据类型,可以看作是C语言中的“类”. 下面是C语言中的结构体的实例. #include ...

  9. Go语言中slice作为参数传递时遇到的一些“坑”

    前言 相信看到这个题目,可能大家都觉得是一个老生常谈的月经topic了.一直以来其实把握一个"值传递"基本上就能理解各种情况了,不过最近遇到了更深一点的"小坑" ...

  10. 转载 浅谈C/C++中的static和extern关键字

    浅谈C/C++中的static和extern关键字 2011-04-21 16:57 海子 博客园 字号:T | T   static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.ext ...

随机推荐

  1. CMU15-445 Project4 Concurrency Control心得

    一.概述 过瘾!过瘾!过瘾!P4 真过瘾!写 P3 的博客时我说过"感觉自己在数据库方面真正成长了",但写完 P4 之后最大的感受就是,我终于理解了 andy 在第一课说过的&qu ...

  2. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(10)- 从Serial NAND启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1xxx系列MCU的Serial NAND启动. 最近越来越多的客户在咨询 i.MXRT1xxx 从 Serial N ...

  3. pytesseract and ddddocr

    一.pytesseract 1.简介 Pytesseract是一个Python库,用于将图像中的文本转换为可编辑的字符串.它是基于Google的Tesseract OCR引擎开发的 .Tesserac ...

  4. v4l2采样usb摄像头并显示

    ubuntu 思路: 1. 首先理解camera工作原理,重点理解 yuv,rgb视频流, 即Sensor数据输出的图像格式; 大体过程:光线通过镜头Lens进入摄像头内部,通过IR过滤掉红外光,抵达 ...

  5. filter() 函数的学习

    1.    filter() 函数 用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换.该接收两个参数, 第一个为函数,第二个为序列,序列的每个 ...

  6. Linux 过滤进程和端口号

    IDEA覆盖率测速显示百分比 ctrl + alt + F6 取消勾选 ps - ef | grep java过滤Java进程 netstat -anop | grep 74933 过滤端口号 重命名 ...

  7. 【RocketMQ】MQ消息发送总结

    RocketMQ是通过DefaultMQProducer进行消息发送的,它实现了MQProducer接口,MQProducer接口中定义了消息发送的方法,方法主要分为三大类: send同步进行消息发送 ...

  8. 在原生APP中集成Unity容器

    随着技术的发展,越来越多的APP期望拥有3D,AR的能力.要达到这个目标可以选择使用原生开发,也可以使用Unity成熟的3D开发技术链,通过嵌入的方式将Unity容器嵌入到APP中.这里介绍的是通过嵌 ...

  9. vue3+vite2动态绑定图片优雅解决方案

    优雅解决方案在最下面,小伙伴们儿可以直接前往 背景 在vue3+vite2项目中,我们有时候想要动态绑定资源,比如像下面的代码这样: <template> <div> < ...

  10. iOS交叉编译

    编译objc程序 ~/toolchain4/pre/bin/arm-apple-darwin9-gcc -arch arm -lobjc -framework CoreFoundation -fram ...