广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang切片扩容规则的实现方法
  • 728
分享到

golang切片扩容规则的实现方法

2023-06-06 16:06:38 728人浏览 薄情痞子
摘要

这篇文章主要介绍golang切片扩容规则的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Golang扩容规则举个例子来演示下package mainimport ("fmt&qu

这篇文章主要介绍golang切片扩容规则的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Golang扩容规则

golang切片扩容规则的实现方法

举个例子来演示下

package mainimport ("fmt")func main() {arr1 := [4]int{1,2,3,4}//此时slice1为[1,2,3] 长度为3,容量为4slice1 :=arr1[:3]fmt.Println(slice1,len(slice1),cap(slice1))slice1 = append(slice1,5000,6000)fmt.Println(slice1,len(slice1),cap(slice1))}

此时容量由原来的4扩容到了8,你以为就是简单的2倍吗?那你可真理解错了,你得知道他背后扩容的原因,我来给你计算下
1、原来的容量为4,追加了5000,6000后变为了6个,此时4*2>6,满足了脑图中的第二种情况,并且元素个数小于1024,先扩容2倍
2、由于64位操作系统下,一个int类型占8个字节,所以8*8=64
3、此时匹配操作系统预先分配好的内存规格,规则正好匹配了64,所以用64/8=8,所以扩容后的容量为8

golang切片扩容规则的实现方法

咱们再来一个例子看你是否真正理解了他的扩容规则, 这个例子最后容量为10

package mainimport ("fmt")func main() {arr1 := [4]int{1,2,3,4}//此时slice1为[1,2,3] 长度为3,容量为4slice1 :=arr1[:3]fmt.Println(slice1,len(slice1),cap(slice1))slice1 = append(slice1,5000,6000,7000,8000,9000,10000)fmt.Println(slice1,len(slice1),cap(slice1))}

golang切片扩容规则的实现方法

···
慌不慌,你是不懂了吗?不懂我给你好好算一下
1⃣️原来容量是4,此时追加了5个元素,变为了9
2⃣️4*2<9,满足脑图中的第一个条件,由于int类型在64位操作系统下占用8个字节,所以用9*8=72
3⃣️所以此时需要匹配的内存规格为80
4⃣️用80/8=10,所以此时容量为10

元素个数大于1024的我就不给你展示了,原理都是一样的,认认真真看完之后扩容规则肯定就懂了,不用再看其他的了

以上是“golang切片扩容规则的实现方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网GO频道!

您可能感兴趣的文档:

--结束END--

本文标题: golang切片扩容规则的实现方法

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang切片扩容规则的实现方法
    这篇文章主要介绍golang切片扩容规则的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!golang扩容规则举个例子来演示下package mainimport ("fmt&qu...
    99+
    2023-06-06
  • golang切片扩容的方法是什么
    在Go语言中,切片的扩容是通过使用内置函数append()来实现的。当切片的长度不够容纳新元素时,append()函数会创建一个新的...
    99+
    2023-10-21
    golang
  • 浅谈Golang Slice切片如何扩容的实现
    目录一、Slice数据结构是什么?二、详细代码1.数据结构2.扩容原则3.如何理解扩容规则一1.当小于1024个元素时2.当大于1024个元素时4.如何理解扩容规则二1.简单理解内存...
    99+
    2022-11-13
  • 实现Golang二维切片初始化的方法
    这篇文章主要讲解了“实现Golang二维切片初始化的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“实现Golang二维切片初始化的方法”吧!golang适合做什么golang可以做服务器...
    99+
    2023-06-14
  • redis实现扩容的方法
    小编给大家分享一下redis实现扩容的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!扩容:1.集群,使用代理,达到集群的目的...
    99+
    2022-10-18
  • javascript实现图片切换的方法
    小编给大家分享一下javascript实现图片切换的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!javascript实现图片切换的方法:首先新建文件,使用i...
    99+
    2023-06-14
  • css实现不规则表格的方法
    小编给大家分享一下css实现不规则表格的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!css实现不规则表格的方法:首先创建一个HTML示例文件;然后通过tab...
    99+
    2023-06-14
  • Go interface{} 转切片类型的实现方法
    遇到这样一个情况想将变量v转化为[]string类型 var v interface{} a := []interface{}{"1", "2"} v = a // v 这时还是in...
    99+
    2022-11-13
  • php实现正则替换内容的方法
    这篇文章主要介绍“php实现正则替换内容的方法”,在日常操作中,相信很多人在php实现正则替换内容的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php实现正则替换内容的方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-30
  • SpringAOP切入点规范及获取方法参数的实现
    切入点规范 @Pointcut("execution(* com.example.server.service.TeacherService.*(..))") 上面的切入点会切...
    99+
    2022-11-12
  • 使用Golang和FFmpeg实现视频特效切换的方法
    要使用Golang和FFmpeg实现视频特效切换,你可以按照以下步骤进行:1. 确保你已经安装了Go和FFmpeg。2. 导入所需的...
    99+
    2023-10-08
    Golang
  • PHP实现数据库集群扩容的方法
    数据库集群是现代大型网站和企业级应用程序中常用的高可用性解决方案,实现负载均衡和数据冗余。随着业务规模的不断扩大,扩容或缩容成为集群管理的一项重要任务。本文将介绍如何利用PHP语言实现数据库集群的扩容。数据库集群数据库集群是由多个数据库服务...
    99+
    2023-05-15
    PHP 数据库集群 扩容
  • Android中将一个图片切割成多个图片的实现方法
    以下是封装好的两个类,可以实现图片的切割。仅供参考和学习。 一个是ImagePiece类,此类保存了一个Bitmap对象和一个标识图片的顺序索引的int变量。 代码如下:pac...
    99+
    2022-06-06
    方法 图片 Android
  • PHP实现数据库分片缩容的方法
    随着互联网应用的发展,数据量的快速增长已经成为了公司面临的一大难题,而数据库分片技术正是为了应对这个问题而诞生的。数据库分片(Sharding),是将大型数据库分割成多个较小数据库的技术。通过分片,可以将数据分散到多个服务器上,从而实现水平...
    99+
    2023-05-18
    PHP 缩容 数据库分片
  • Android编程单击图片实现切换效果的方法
    本文实例讲述了Android编程单击图片实现切换效果的方法。分享给大家供大家参考,具体如下: 新建一个Android项目,命名为FrameLayout 此实例主要操作src文件...
    99+
    2022-06-06
    方法 图片 Android
  • 如何使用jquery的attr方法实现图片切换效果
    这篇文章主要介绍如何使用jquery的attr方法实现图片切换效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!利用jquery的attr方法实现如下简单的图片切换效果代码如下:&l...
    99+
    2022-10-19
  • PHP实现数据库负载均衡扩容的方法
    在当前互联网应用数量和访问量持续增长的环境下,如何提升数据库的负载均衡性能,成为了每一位技术人员关注的焦点。其中,PHP作为一种常用的开发语言,如何对其实现数据库负载均衡扩容,成为了热门话题。本文将结合实际应用经验,介绍使用PHP实现数据库...
    99+
    2023-05-15
    PHP 扩容 数据库负载均衡
  • Android中使用imageviewswitcher 实现图片切换轮播导航的方法
    前面写过了使用ViewFlipper和ViewPager实现屏幕中视图切换的效果(ViewPager未实现轮播)附链接: ANDROID中使用VIEWFLIPPER类实现屏幕切...
    99+
    2022-06-06
    方法 图片 轮播 Android
  • Linux磁盘挂载、分区、扩容操作的实现方法
    基本概念 在操作前,首先要了解一些基本概念 磁盘 在linux系统中所有的设备都会以文件的形式存储。设备一般保存在/dev目录下面,以sda、sda1、sda2 …,sdb、sdb1…,hda,hdb。现在的设备一般都...
    99+
    2022-06-04
    Linux磁盘挂载 Linux磁盘分区 Linux磁盘扩容
  • java实现文件切片上传百度云+断点续传的方法
    前言: 本文代码通过dubbo进行远程调用的接口,如果不使用dubbo,直接将service放到你的service,并稍作修改,redis替换成自己封装的工具即可。下方代码有点多,但...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作