惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
L
LangChain Blog
B
Blog
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
U
Unit 42
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
雷峰网
雷峰网
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
爱范儿
爱范儿
小众软件
小众软件
I
InfoQ
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
C
Check Point Blog

浮华生

Elasticsearch 检索性能优化 - 浮华生 舆情监控系统综述 - 浮华生 2024 半年度总结 - 浮华生 2023 年终总结 - 浮华生 异地机器组网方案 - 浮华生 Kubernetes 部署 Elasticsearch 和 Kibana - 浮华生 2022 年终总结 - 浮华生 RabbitMQ connection channel 的关系 - 浮华生 Kafka Java 客户端 Producer 原理分析 - 浮华生 RabbitMQ 和 Kafka 应用原理简单对比 - 浮华生 阿里云 OpenSearch 介绍 - 浮华生 Mac OS 下打造 golang nvim 编程环境之基础配置 - 浮华生 电商搜索技术总结 - 浮华生 电商搜索业务总结 - 浮华生 2021 年终总结 - 浮华生 Cypress 实践总结 - 浮华生 年终总结 - 浮华生 关于我 - 浮华生 使用 cucumber 进行行为驱动开发(BDD) - 浮华生 微服务应用集成 SpringCloud 步骤 - 浮华生 电商搜索数据同步方案 - 浮华生 通过一道数值转换题重温计算机补码 - 浮华生 macOS 系统推荐的一些软件 - 浮华生 DevOps 实施规划(持续更新) - 浮华生 rabbitmq 如何提高可靠性并保证消费端幂等 - 浮华生 AMQ Model总结 - 浮华生 结对编程 - 浮华生 RSocket 介绍 - 浮华生 面向对象的理解 - 浮华生 企业平台技术框架 - 浮华生
Golang Array 和 Slice 区别 - 浮华生
浮华生 · 2022-04-22 · via 浮华生

开始学习 Golang 时,对于 array 和 slice 的理解并不深入,还有很多疑惑的困扰着我。于是就深入的研究了一下。

Array 与 Slice 的 区别

  1. array 是固定长度的,声明时必须是常量大小,定义好后不可更改,更不会扩容,超出访问地址后会 panic;
  2. array 是值类型,将旧的 array 赋值给新的 array 相当于两个完全独立的 array;
  3. slice 是 struct 类型,可动态声明 length 和 capacity 大小,底层基于 array ,但是 slice 可以表示 array 的部分元素,修改 slice 内容会修改所引用 array 的值。

Array/Slice 的 len() 和 cap()

array 的 length 和 capacity 是相同的,不能进行扩容;

slice 中的 len():是指当前 slice 能够访问的元素;

slice 中的 cap():是指当前 slice 指针的开头到数组的最后一位,slice 使用 append 进行函数追加时,能够进行动态扩容

Slice 的 length 和 capacity 计算

1
2
3
4
5
arr := [3]int{1,2,3} // 假设此数组的 cap 为 k
sli := arr[i:j] // [i,j)
len: j - i
cap: k - i

Slice 扩容

Slice 的 len() 和 cap()

slice 中的 len():是指当前 slice 能够访问的元素;

slice 中的 cap():是指当前 slice 指针的开头到数组的最后一位

参考文档

https://go.dev/blog/slices