返回顶部
首页 > 资讯 > 后端开发 > GO >golang 之slice 变长数组
  • 229
分享到

golang 之slice 变长数组

2023-06-04 15:06:25 229人浏览 八月长安
摘要

slice:就是变长数组,主要是因为array(数组)长度不可变,导致在使用的时候存在诸多限制,才有了slice;slice 主要包含3个部分:1、指针 2、容量  3、长度 ,由于slice 的底层结构依然是数组,所以操作的时候

slice:就是变长数组,主要是因为array(数组)长度不可变,导致在使用的时候存在诸多限制,才有了slice;slice 主要包含3个部分:1、指针 2、容量  3、长度 ,由于slice 的底层结构依然是数组,所以操作的时候,不是操作slice的数据,而实际是操作底层数组的数据,所以得有指向该数组的指针,长度则表示当前slice的长度(非底层数组的长度),容量则表示从slice起始位置到底层数组的结束位置,注意此处是位置差,即表示能存放多少个元素。

slice 的用法和array类似,但申明时,不指定数组的长度,如 var s []int,slice 通过len(s),cap(s)查看s的长度和容量

测试下:

mainmain(){   testArray =[]int {,,,,,,,,,}   fmt.Println(testArray[:])   fmt.Println(testArray[len(testArray)-])   i,v:=testArray {      fmt.Printf(,i,v)   }   s:=testArray[:]   i1,v1:=s{      fmt.Printf(,i1,v1)   }   fmt.Printf(,cap(s),len(s))}测试结果为:[0 1 2 3]90 01 12 23 34 45 56 67 78 89 90 31 42 53 64 7the s cap's 7the s len's 5slice 倒序:package mainimport "fmt"func main(){   var testArray [10]int=[10]int {0,1,2,3,4,5,6,7,8,9}   fmt.Println(testArray[0:4])   fmt.Println(testArray[len(testArray)-1])   for i,v:=range testArray {      fmt.Printf("%d %d\n",i,v)   }   s:=testArray[3:8]   for i1,v1:=range s{      fmt.Printf("%d %d\n",i1,v1)   }   fmt.Printf("the s cap's %d\nthe s len's %d\n",cap(s),len(s))   // reserse the slice   fmt.Println("before reserse ",s)   reserse(s)   fmt.Println("after reserse",s)}func reserse(s []int){   for i,j:=0,len(s)-1;i<j;i,j = i+1,j-1 {      //for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {      s[i],s[j]=s[j],s[i]   }}输出:。。。before reserse  [3 4 5 6 7]after reserse [7 6 5 4 3]

检查slice是否为空的两种方式,直接和nil比较,还有一个是判断slice长度为空

testNil []inttestNil==nil {   fmt.Println()}len(testNil)=={   fmt.Println()}
您可能感兴趣的文档:

--结束END--

本文标题: golang 之slice 变长数组

本文链接: https://lsjlt.com/news/238330.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • golang 之slice 变长数组
    slice:就是变长数组,主要是因为array(数组)长度不可变,导致在使用的时候存在诸多限制,才有了slice;slice 主要包含3个部分:1、指针 2、容量  3、长度 ,由于slice 的底层结构依然是数组,所以操作的时候...
    99+
    2023-06-04
  • C语言高级教程之变长数组详解
    目录一、本文的编译环境二、一维数组在执行期间确定长度三、二维数组在执行期间确定长度四、一维变长数组实例五、完整程序5.1 Main.h 文件程序5.2 Main.c 文件程序一、本文...
    99+
    2023-02-06
    C语言使用变长数组 C语言 变长数组
  • javascript中slice()方法会不会改变原数组
    这篇文章将为大家详细讲解有关javascript中slice()方法会不会改变原数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript是什么JS是JavaScript的简称,它是一种直译式...
    99+
    2023-06-14
  • Golang函数的变长参数传递详解
    Golang是近年来受到广泛关注的一门编程语言,它在很多方面都有着不俗的表现。其中,函数的变长参数传递就是一个相对特别的特性,它对于函数的归纳、减少代码冗余等都有着非常实用的作用。接下来,我们就来详细探究一下Golang中函数的变长参数传递...
    99+
    2023-05-16
    函数 Golang 变长参数
  • Golang range slice 与range array 之间的区别
    目录为什么?理解case rangeSlicecase rangeArray测试代码结构图: 为什么? var data [][]int for _, rangeSlice :=...
    99+
    2024-04-02
  • golang学习之路之函数可变参数
    可变参数的申明:sum(adds ... int ) int{   total:=_,add:=adds{     &n...
    99+
    2023-06-04
  • c语言变长数组怎么实现
    在C语言中,变长数组(Variable Length Arrays,VLA)可以通过使用动态分配的方式来创建。具体步骤如下: 声...
    99+
    2024-03-13
    c语言
  • c++数组长度可以是变量吗
    是。c++ 数组长度可以是变量,可以通过使用动态数组(矢量)实现:使用 std::vector 模板类创建动态数组。根据需要设置动态数组的长度。 C++ 数组长度是否可以是变量? 是,...
    99+
    2024-05-08
    c++
  • JavaScript中数组长度是否可以改变
    这篇文章主要介绍了JavaScript中数组长度是否可以改变,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Ja...
    99+
    2024-04-02
  • Java如何自定义一个变长数组
    这篇文章主要介绍“Java如何自定义一个变长数组”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何自定义一个变长数组”文章能帮助大家解决问题。思路分析主要功能点:新建时可以指定容量大小,不指...
    99+
    2023-07-04
  • golang函数中的变长参数是如何实现的?
    go语言中的函数支持变长参数,通过切片实现,收集变长参数到一个与其类型相同的切片中。变长参数必须是参数列表中的最后一个参数,类型由编译器推断,可以是任意类型。 Go 语言函数中的变长参...
    99+
    2024-05-23
    golang 变长参数 go语言
  • c语言怎么定义可变长度数组
    在C语言中,可以使用指针和动态内存分配来定义可变长度数组。下面是一个示例代码:```c#include #include int m...
    99+
    2023-10-10
    c语言
  • c语言变长数组的用法是什么
    C语言中的变长数组(Variable Length Arrays,VLA)是指在定义数组时,可以使用变量作为数组的长度。变长数组的长...
    99+
    2024-03-13
    c语言
  • Python技巧之变长和定长序列拆分
    目录1.元组拆分2.字符串拆分3.拆分时丢弃值4.嵌套序列拆分5.从任意长度的可迭代对象中拆分Python中的任何序列(可迭代的对象)都可以通过赋值操作进行拆分,包括但不限于元组、列...
    99+
    2024-04-02
  • golang数据结构之golang稀疏数组sparsearray详解
    目录一、稀疏数组1. 先看一个实际的需求2. 基本介绍3. 应用实例一、稀疏数组 1. 先看一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能 分析按照原始的方式来的二维...
    99+
    2024-04-02
  • C++11新特性之变长参数模板详解
    目录C++11 变长参数模板变长函数参数包如何解参数包sizeof()获得函数参数个数递归模板函数变参模板展开结论C++11 变长参数模板 在C++11之前,无论是类模板 还是函数...
    99+
    2024-04-02
  • 一文带你了解C语言中的0长度数组(可变数组/柔性数组)
    目录零长度数组概念0长度数组的用途GNU Document中 变长数组的支持0长度数组的其他特征零长度数组概念 众所周知, GNU/GCC 在标准的 C/C++ 基础上做了有实用性的...
    99+
    2023-03-19
    C语言0长度数组 C语言零长度数组 C语言可变数组 C语言柔性数组
  • python内置函数之slice案例详解
    英文文档: class slice(stop) class slice(start, stop[, step]) Return a slice object representin...
    99+
    2024-04-02
  • 关于旧数组被遗漏,当Slice引用到新创建的数组时,当golang中超过cap时
    php小编柚子在本文中将为大家介绍一个有关旧数组被遗漏的问题,并解释在golang中当Slice引用到新创建的数组时,当超过cap时会发生什么。这个问题涉及到Slice和数组的动态变化...
    99+
    2024-02-10
  • golang:切片之间的数组共享
    php小编子墨在本文中将为大家介绍golang中切片之间的数组共享的知识。在golang中,切片是一种动态数组,可以根据需要自动扩容。切片之间的数组共享是golang中非常重要的一个特...
    99+
    2024-02-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作