首页 > 其他分享 >Golang 从数组创建slice(三个参数)

Golang 从数组创建slice(三个参数)

时间:2024-12-22 21:43:01浏览次数:4  
标签:11 sliceInt arr slice Golang 数组 append

测试环境:win64,go版本:1.21.8 IDE:GoLand

一般的我们知道,slice本身是不存数据的,是对于底层数组的引用,所以最接近底层的创建slice的方法可以这样写:

arr := [5]int{1, 2, 3, 4, 5}
sliceInt := arr[:]

sliceInt 的底层数据就是arr

我这次记录下我平时不太会用到的用三个参数创建,大致测试如下:

func main() {
    arr := [5]int{1, 2, 3, 4, 5}
    sliceInt := arr[0:3:4] 
    fmt.Println(cap(sliceInt), len(sliceInt), sliceInt)
    sliceInt[2] = 10
    sliceInt = append(sliceInt, 11)
    fmt.Println(arr)
    sliceInt = append(sliceInt, 11)
    fmt.Println(arr)
}

输出结果如下

4 3 [1 2 3]
[1 2 10 11 5]
[1 2 10 11 5]

这里的sliceInt底层就是arr数组,cap为4,len为3。此时还有一个空位可以使用,因此当只向sliceInt中append一次数据时,会修改原来arr数组的数据,当再一次append操作时会触发切片的扩容,arr数组的数据也就不会被修改了。

sliceInt := arr[0:3:4] 

从上面也能看到4表示了引用到数组最后哪个位置。语法上go规定从数组上创建slice时后面的参数一定是大于等于前面的,如果所示:

如果小于的话会IDE会直接报错。

 

记录以及分享,有问题可以问,看到有价值的会回复。

标签:11,sliceInt,arr,slice,Golang,数组,append
From: https://www.cnblogs.com/currentM/p/18622604

相关文章

  • Golang逃逸现象
    1、什么是内联函数?什么是逃逸现象?什么是内联函数?内联函数是一种在编译时,直接将要调用的代码嵌入到调用处的优化技术,其主要目的是减少函数调用时的开销,例如对于普通函数其执行过程如下:将参数压入栈中根据地址跳转至对应位置执行执行完毕后返回调用点而使用内联函数则将函......
  • 第八章:数组-上
    在编写程序的过程中,经常会遇到使用很多数据量的情况,处理每一个数据量都要有一个相对应的变量,如果每一个变量都要单独进行定义则很繁琐,使用数组就可以解决这种问题。本章致力于使读者掌握一维数组和二维数组的作用,并且能利用所学知识解决一些实际问题;掌握字符数组的使用及......
  • 数据结构——数组
    目录一、数组的基本概念二、数组的地址计算2.1二维数组元素地址2.2三维数组元素的地址2.3n维数组元素的地址三、数组的顺序存储四、矩阵的压缩存储4.1特殊矩阵4.2稀疏矩阵4.2.1 三元组顺序表矩阵运算——矩阵转置方法1:压缩扫描方法2:快速转置 4.2.2 行逻......
  • js数组-实例方法:Array.prototype.entries,Array.prototype.every,Array.prototype.fill
    Array.prototype.entries()entries()方法返回一个新的数组迭代器对象,该对象包含数组中每个索引的键/值对语法entries()返回值一个新的可迭代迭代器对象Array.prototype.myEntries()Array.prototype.myEntries=function(){constnewThis=[]for(leti......
  • Golang学习笔记_16——Map
    Golang学习笔记_13——数组Golang学习笔记_14——切片Golang学习笔记_15——range文章目录Map1.介绍2.声明和初始化3.类型4.基本操作4.1插入更新4.2访问值4.3删除4.4遍历5.注意事项6.示例Map1.介绍在Go语言中,map是一种内置的数据结构,用于存储键......
  • 后缀数组
    后缀数组后缀数组(SuffixArray)是一个通过对字符串的所有后缀经过排序后得到的数组。实现记\(sa_i\)表示排名为\(i\)的后缀为\(S[sa_i,n]\),\(rk_i\)表示\(S[i,n]\)的排名。由此可得:\[sa_{rk_i}=rk_{sa_i}=i\]考虑已经将每个串以前\(2^{k-1}\)个字符为关键字排......
  • 78.一维数组和二维数组的排序实现
    因为碰到了一些题目故此来做总结一维数组最常用的冒泡排序:#include<stdio.h>voidsort(intarr[],intn){//外层循环for(inti=0;i<n-1;++i){intflag=1;//假设flag=1就是已经排序好的//内层循环for(intj=0;j<n-1-i;......
  • Golang中的Map是怎么遍历的
    在Golang中,遍历map的常见方法是使用for...range循环。map是无序的键值对集合,因此遍历map时,每次迭代访问的键值对顺序可能不同。以下是一个遍历map的示例:packagemainimport"fmt"funcmain(){//创建一个mapmyMap:=map[string]int{"ap......
  • 写一个方法统计给定数组中重复元素的次数
    在前端开发中,你可以使用JavaScript来编写一个方法,用于统计给定数组中重复元素的次数。以下是一个简单的示例:functioncountDuplicates(arr){//创建一个空对象,用于存储元素及其出现的次数constelementCount={};//遍历数组,统计每个元素出现的次数arr.forEach((e......
  • 实现一个数组的push方法
    在JavaScript中,数组已经有一个内置的push方法,用于向数组的末尾添加一个或多个元素,并返回新的长度。但是,如果你想自己实现一个类似的函数,以下是一个简单的方式:Array.prototype.myPush=function(...items){for(letitemofitems){this[this.length]=item;......