当前位置: 首页 > news >正文

golang中数组array和切片slice的区别

go语言中最常用的数据结构 数组array 和 切片 slice的区别对比:

定义和初始化

数组: [size]类型      切片: []类型 ,   数组变量[low:high]

var arr1 = [3]string{"a", "b", "c"} // 数组array定义和初始化fmt.Printf("arr1数据类型: %v Type: %T\n", reflect.ValueOf(arr1).Kind(), arr1)//arr1数据类型: array Type: [3]stringvar s1 = []string{"a", "b", "c"} // 切片slice定义和初始化fmt.Printf("s1数据类型: %v Type: %T\n", reflect.ValueOf(s1).Kind(), s1)//s1数据类型: slice Type: []strings2 := arr1[0:2] // 从数组arr1中通过指定下标和上标截取fmt.Printf("s2数据类型: %v Type: %T\n", reflect.ValueOf(s2).Kind(), s2)// s2数据类型: slice Type: []string

区别

  1. 定义的方式不同,切片可以指定定义和初始化,也可以从数组中截取;
  2. 数组定义后大小不可修改;
  3. 切片的大小可以通过 append()函数修改大小;
  4. 切片的长度可以在运行时修改,最小为 0 最大为相关数组的长度;
  5. 切片是一个 长度可变的数组
  6. 数据类型不一样,array是值类型【变量直接存储值 通常在栈中分配内存】, slice是引用类型【变量存储的是一个地址,内存通常在堆上分配】,引用类型不需要使用额外的内存并且比使用数组更有效率

相同点

  1. 数据的访问和修改都可以通过  变量名[下标] 的方式获取和修改;
  2. 都可以使用函数 len()获取长度, cap()获取容量;
  3. ...... 

http://www.lryc.cn/news/343638.html

相关文章:

  • LSM-Tree 原理分析
  • 【代码随想录37期】Day01 二分查找 + 移除元素
  • GitPython 使用教程
  • MATLAB 基于规则格网的点云抽稀方法(自定义实现)(65)
  • 论文阅读】 ICCV-2021-3D Local Convolutional Neural Networks for Gait Recognition
  • 同一局域网如何从Windows系统拷贝文件到银河麒麟系统
  • 2024年华为OD机试真题-数的分解-(C++)-OD统一考试(C卷D卷)
  • vue-img-cutter 图片裁剪详解
  • PCL 点云中的平面点云提取
  • 4.用python爬取保存在text中的格式为m3u8的视频
  • 240503-关于Unity的二三事
  • 顺序栈的操作
  • STM32 各外设GPIO配置
  • React-hooks相关知识点总结
  • 20240508日记
  • Web实操(6),基础知识学习(24~)
  • JavaSE——方法详解
  • iBarcoder for Mac:一站式条形码生成软件
  • 学习R语言第六天
  • LeetCode算法题:9. 回文数(Java解法)
  • VALSE 2024 Workshop报告分享┆面向实际场景体验的多模态大模型DeepSeek VL
  • RFC 791 (1)-导论
  • 力扣hot100:199. 二叉树的右视图/437. 路径总和 III(dfs/回溯/树上前缀和/哈希表)
  • 浅谈 HTTPS
  • js手动实现unshift
  • Failed to get DISPLAY: Error: All configured authentication methods failed 解决方法
  • 随便聊一下 显控科技 控制屏 通过 RS485 接口 上位机 通讯 说明
  • C++学习笔记(多线程)
  • 解决Redis的键值前出现类似\xAC\xED\x00\x05t\x00*这样的字符序列
  • 分享 Kamailio 5.7.x 预处理一例