首页 > 其他分享 >go语言切片

go语言切片

时间:2023-06-05 14:56:38浏览次数:41  
标签:语言 int 切片 var 数组 go 长度

特性

长度可变、 内容可变、 引用类型、 底层基于数组

定义

var s1 []int               // 长度、容量为0的切片,零值
var s2 = []int{}           // 长度、容量为0的切片,字面量定义
var s3 = []int{1, 3, 5}    // 字面量定义,长度、容量都是3
var s4 = make([]int, 0)    // 长度、容量为0的切片,make([]T, length)
var s5 = make([]int, 3, 5) // 长度为3,容量为5,底层数组为长度为5,元素长度为3,所以显
示[0, 0, 0]

与数组不同,切片的cap和长度len不再相同。

内存模型

切片本质是对底层数组一个连续片段的引用。此片段可以是整个底层数组,也可以是由起始和终止索引 标识的一些项的子集。

在go的源码(https://github.com/golang/go/blob/master/src/runtime/slice.go)中可以看到切片是有结构体的,切片结构体的标头值有三个:

 

s := []int{1, 3, 5, 7}
fmt.Printf("%v, %p, %p", s, &s, &s[0])
// &a是切片结构体的地址,&a[0]是底层数组的地址。

 

标签:语言,int,切片,var,数组,go,长度
From: https://www.cnblogs.com/caibao666/p/17457712.html

相关文章

  • Java建造者模式,用代码体验LEGO的快乐
    前言本文主要讲述Java设计模式中的建造者模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。一.什么是建造者模式建造者模式是23种设计模式中创建型模式的一种,它关注的是对象创建的步骤,将一个复杂的对象抽象出来,一步步地把一个复杂的对象创建出来。......
  • 从0到1:如何建立一个大规模多语言代码生成预训练模型
    国产AI辅助编程工具CodeGeeX是一个使用AI大模型为基座的辅助编程工具,帮助开发人员更快的编写代码。可以自动完成整个函数的编写,只需要根据注释或Tab按键即可。它已经在Java、JavaScript和Python等二十多种语言上进行了训练,并基于大量公开的开源代码、官方文档和公共论坛上的代码来......
  • c语言基于链表的文件存储与读取
    今天写了一下如何将链表中的数据存储到文件中head为链表的起始结点写入文件voidfilewirte(LinkListhead){LinkListfd;FILE*p=fopen("student_grad.txt","w");if(p==NULL){printf("没有东西");getchar();exit(1);}fd=head......
  • Docker运行Django框架
    Django框架创建django-pg项目目录[root@docker~]#mkdirdocker-compose-django[root@docker~]#cddocker-compose-django/[root@dockerdocker-compose-django]#mkdirdjango-pg在项目目录下创建docker-compose.yml文件该文件定义了两个服务,一个是名为db的Postgres数......
  • Google评分卡自评
    最近看了篇技术大佬的文章,原文链接(https://coolshell.cn/articles/20977.html),其中有个Google评分卡,记录一下自评结果,每年都来更新一下,记录自我成长评分标准0:youareunfamiliarwiththesubjectarea.(不熟悉的领域。也就是说对相关的领域几乎一无所知。)1:youcanread/u......
  • go语言数组
    线性数据结构线性表是一种抽象的数学概念,是一组元素的序列的抽象,它由有穷个元素组成(0个或任意个)。包括顺序表和链接表。顺序表:使用一大块连续的内存顺序存储表中的元素,这样实现的表称为顺序表,或称连续表在顺序表中,元素的关系使用顺序表的存储顺序自然地表示;链接表:在存储空间......
  • 从源码分析 Go 语言使用 cgo 导致的线程增长
    TDengineGo连接器https://github.com/taosdata/driver-go使用cgo调用taos.so中的API,使用过程中发现线程数不断增长,本文从一个cgo调用开始解析Go源码,分析造成线程增长的原因。转换cgo代码对driver-go/wrapper/taosc.go进行转换gotoolcgotaosc.go执行后生成......
  • C语言多线程爬虫代码示例
    使用C语言编写多线程爬虫能够同时处理多条数据,提高了爬虫的并发度和效率。在编写多线程爬虫时仍需要注意线程安全性和错误处理机制,并根据系统资源和目标网站的特点调整线程数和优化并发策略,以提高程序效率和稳定性。以下是一个使用C语言多线程编写的简单爬虫示例,实现了并发爬取多......
  • C语言写网络爬虫总体思路
    使用C语言编写爬虫可以实现网络数据的快速获取和处理,适用于需要高效处理海量数据的场景。与其他编程语言相比,C语言具有较高的性能和灵活性,可以进行底层操作和内存管理,适合处理较复杂的网络请求和数据处理任务。但是,使用C语言编写爬虫也存在一些挑战。C语言的语法较为复杂,需要较高的......
  • C语言写网络爬虫总体思路
    使用C语言编写爬虫可以实现网络数据的快速获取和处理,适用于需要高效处理海量数据的场景。与其他编程语言相比,C语言具有较高的性能和灵活性,可以进行底层操作和内存管理,适合处理较复杂的网络请求和数据处理任务。但是,使用C语言编写爬虫也存在一些挑战。C语言的语法较为复杂,需要较高......