首页 > 其他分享 >go语言数组

go语言数组

时间:2023-06-05 11:45:53浏览次数:34  
标签:顺序 语言 int 元素 数组 go 长度 string

线性数据结构

线性表

是一种抽象的数学概念,是一组元素的序列的抽象,它由有穷个元素组成(0 个或任意个)。包括顺序表和链接表。

顺序表:使用一大块连续的内存顺序存储表中的元素,这样实现的表称为顺序表,或称连续表 在顺序表中,元素的关系使用顺序表的存储顺序自然地表示;

链接表:在存储空间中将分散存储的元素链接起来,这种实现称为链接表,简称链表。

 数组 长度不可变、 内容可变、 可索引、 值类型、 顺序表 定义方式
var a0 [3]int                   // 零值初始化3个元素的数组
var a1 = [3]int{}               // 零值初始化3个元素的数组
// [3]int是类型,[3]int{} 是字面量值
var a2 [3]int = [3]int{1, 3, 5} // 声明且初始化
var a3 = [3]int{1, 3, 5}        // 声明且初始化

const count = 3
a4 := [count]int{1, 3, 5} // 此处的count为常量,变量的话不支持,变量是可变的,数组的声明是需要明确长度的。
// 二维数组
a8 := [2][3]int{{100}} // 两行三列 [[100 0 0] [0 0 0]]
// [[10 0 0] [11 12 0] [13 14 15] [16 0 0]]
// 多维数组,只有第一维才能用...推测
// 第一维有4个,第二维有3个。可以看做4行3列的表
a9 := [...][3]int{{10}, {11, 12}, {13, 14, 15}, {16}} 

思考:三维数组怎么定义?怎么去理解?

 

长度和容量 cap即capacity,容量,表示给数组分配的内存空间可以容纳多少个元素 len即length,长度,指的是容器中目前有几个元素 由于数组创建时就必须确定的元素个数,且不能改变长度,所以不需要预留多余的内存空间,因此cap 和len对数组来说相等。 索引 Go语言不支持负索引。通过[index]来获取该位置上的值。索引范围就是[0, 长度-1]。
a5 := [...]int{10, 30, 50}
a5[0] += 100  // 通过索引来修改值

 

下面是int类型的数组

 下面是string类型数组,对于string类型数组,与int有不同之处,因为string本身长度是可变的,所以不能再像整形那样直接在内存地址中存内容了。

在go中string类型底层其实就是顺序表,对于string类型的数组,不管数组中的元素长度大小,每个元素间隔都是16字节,内存地址中是存储的string的地址,可以理解位二级指针。

 值类型

通过下面示例,可以看出,Go语言在这些地方对数组进行了值拷贝,都生成了一份副本

 

标签:顺序,语言,int,元素,数组,go,长度,string
From: https://www.cnblogs.com/caibao666/p/17457386.html

相关文章

  • 718. 最长重复子数组
    给两个整数数组nums1和nums2,返回两个数组中公共的、长度最长的子数组的长度。示例1:输入:nums1=[1,2,3,2,1],nums2=[3,2,1,4,7]输出:3解释:长度最长的公共子数组是[3,2,1]。>动态规划classSolution{public:intfindLength(vector<int>&nums1,ve......
  • 从源码分析 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语言多线程编写的简单爬虫示例,实现了并发爬取多......
  • 【蓝桥杯集训·每日一题】AcWing 3805. 环形数组
    写在前面本人CSDN博客主页:这里一、题目1、原题链接3805.环形数组2、题目描述给定一个长度为n的环形数组a0,a1,…,an−1。现在要对该数组进行m次操作。操作分为以下两种:增值操作lrd,将区间[l,r]上的每个元素都增加d。求最小值操作lr,输出区间[l,r]内的所有元素的最小......
  • C语言写网络爬虫总体思路
    使用C语言编写爬虫可以实现网络数据的快速获取和处理,适用于需要高效处理海量数据的场景。与其他编程语言相比,C语言具有较高的性能和灵活性,可以进行底层操作和内存管理,适合处理较复杂的网络请求和数据处理任务。但是,使用C语言编写爬虫也存在一些挑战。C语言的语法较为复杂,需要较高的......
  • C语言写网络爬虫总体思路
    使用C语言编写爬虫可以实现网络数据的快速获取和处理,适用于需要高效处理海量数据的场景。与其他编程语言相比,C语言具有较高的性能和灵活性,可以进行底层操作和内存管理,适合处理较复杂的网络请求和数据处理任务。但是,使用C语言编写爬虫也存在一些挑战。C语言的语法较为复杂,需要较高......
  • 使用Go语言中的Channel实现并发编程
    引言:Go语言是一门开源的编程语言,以其高效、简洁和并发编程的能力而闻名。在Go语言中,Channel是一个重要的概念,它提供了一种安全、高效地在并发程序中进行通信的机制。本文将介绍Go语言中的Channel,以及如何使用Channel实现并发编程。一、什么是Channel?在Go语言中,Channel是一种用......
  • 写给go开发者的gRPC教程-通信安全
    使用TLS安全传输数据什么是SSL/TLSSSL包含记录层(RecordLayer)和传输层[1],记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509[2]认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密匙作为会话密匙(Sessionkey[3])。这个会谈密匙是用来将通信两方交换......
  • 6.8 数组类库支持
    demo1java.util.Arrays.sort()实现排序classArrayUtil{publicstaticvoidprintArray(inttemp[]){for(intx=0;x<temp.length;x++){System.out.print(temp[x]+",");}}}publicclassHelloWorld{p......
  • 算法 in Golang:D & C(分而治之)
    算法inGolang:D&C(分而治之)D&C算法(策略)Divide&Conquer属于递归算法的一种其实它更像是一种思路、策略递归递归Recursion基线条件BaseCase递归条件RecursiveCaseD&C的步骤找到一个简单的基线条件(BaseCase)把问题分开处理,直到它变为基线条件例......