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

golang 数组和切片

区别
1.数组长度固定,切片长度可变
2.数组是深拷贝,切片是浅拷贝,切片是引用类型

扩容规则 不同版本不一样
https://www.jb51.net/article/280481.htm#_lab2_2_1

go1.18
1.如果期望容量大于当前容量的两倍就会使用期望容量;
2.如果当前切片的容量小于阈值(默认 256)就会将容量翻倍;
3.如果当前切片的容量大于等于阈值(默认 256),小切片的2倍生长,大切片生长1.25倍;

package mainimport "fmt"func main() {arr1 := [3]int{1, 2, 3}arr2 := arr1fmt.Printf("%p\n", &arr1[0])fmt.Printf("%p\n", &arr2[0])arr2[0] = 10fmt.Println(arr1)fmt.Println(arr2)sli1 := []int{1, 2}sli2 := sli1fmt.Printf("%p\n", &sli1[0])fmt.Printf("%p\n", &sli2[0])sli2[0] = 10fmt.Println(sli1)fmt.Println(sli2)sliceAppend(sli1)fmt.Println(sli1)
}// 不会改变原有slice长度
func sliceAppend(s []int) {s = append(s, []int{2, 2, 2}...)fmt.Printf("sliceAppend %d %d\n", len(s), len(s))
}
package mainimport "fmt"func main() {sli1 := []int{1}fmt.Printf("len=%d cap=%d\n", len(sli1), cap(sli1))// 期望容量大于当前容量的两倍sli1 = append(sli1, []int{2, 3, 4}...)fmt.Printf("len=%d cap=%d\n", len(sli1), cap(sli1))// 如果当前切片的容量小于阈值(默认 256)就会将容量翻倍sli1 = append(sli1, 1)fmt.Printf("len=%d cap=%d\n", len(sli1), cap(sli1))// 如果当前切片的容量大于等于阈值(默认 256),就会每次增加 25% 的容量/*//从小切片的2倍生长过渡//大切片生长1.25倍newcap += (newcap + 3*threshold) / 4*/sli2 := make([]int, 256, 256)fmt.Printf("len=%d cap=%d\n", len(sli2), cap(sli2))sli2 = append(sli2, 1)fmt.Printf("len=%d cap=%d\n", len(sli2), cap(sli2))for i := 0; i < 10; i++ {sli2 = append(sli2, sli2...)fmt.Printf("len=%d cap=%d\n", len(sli2), cap(sli2))}}

runtime/slice

type slice struct {array unsafe.Pointerlen   intcap   int
}func growslice(et *_type, old slice, cap int) slice {if raceenabled {callerpc := getcallerpc()racereadrangepc(old.array, uintptr(old.len*int(et.size)), callerpc, abi.FuncPCABIInternal(growslice))}if msanenabled {msanread(old.array, uintptr(old.len*int(et.size)))}if asanenabled {asanread(old.array, uintptr(old.len*int(et.size)))}if cap < old.cap {panic(errorString("growslice: cap out of range"))}if et.size == 0 {// append should not create a slice with nil pointer but non-zero len.// We assume that append doesn't need to preserve old.array in this case.return slice{unsafe.Pointer(&zerobase), old.len, cap}}newcap := old.capdoublecap := newcap + newcapif cap > doublecap {newcap = cap} else {const threshold = 256if old.cap < threshold {newcap = doublecap} else {// Check 0 < newcap to detect overflow// and prevent an infinite loop.for 0 < newcap && newcap < cap {// Transition from growing 2x for small slices// to growing 1.25x for large slices. This formula// gives a smooth-ish transition between the two.newcap += (newcap + 3*threshold) / 4}// Set newcap to the requested cap when// the newcap calculation overflowed.if newcap <= 0 {newcap = cap}}}

相关文章:

golang 数组和切片

区别 1.数组长度固定&#xff0c;切片长度可变 2.数组是深拷贝&#xff0c;切片是浅拷贝&#xff0c;切片是引用类型 扩容规则 不同版本不一样 https://www.jb51.net/article/280481.htm#_lab2_2_1 go1.18 1.如果期望容量大于当前容量的两倍就会使用期望容量&#xff1b; 2.如…...

物联网实战--入门篇之(九)安卓QT--开发框架

目录 一、QT简介 二、开发环境 三、编码风格 四、设计框架 五、总结 一、QT简介 QT是一款以C为基础的开发工具&#xff0c;已经包含了很多常用的库&#xff0c;除了基本的GUI以外&#xff0c;还有网络、数据库、多媒体、进程通信、串口、蓝牙等常用库&#xff0c;开发起来…...

【leetcode面试经典150题】16.接雨水(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…...

互联网面经

腾讯视频 代码&#xff1a;反转链表&#xff0c;单例模式 RAII,哪里用到 Web服务器怎样处理请求 get\post流程 项目使用的还是http1.0吗&#xff1b;http2.0&#xff1a;二进制、首部压缩、主动推送&#xff1b;Https Epoll/select/poll ET/LT 进程地址空间。3…...

xss介绍及作用

XSS&#xff08;Cross-Site Scripting&#xff09;是一种常见的网络安全漏洞&#xff0c;它允许攻击者向网站注入恶意的客户端脚本代码&#xff0c;从而在用户的浏览器中执行这些代码。 XSS攻击的原理是攻击者将恶意脚本插入到网页中的用户输入数据中&#xff0c;当其他用户访…...

PostgreSQL入门到实战-第二弹

PostgreSQL入门到实战 PostgreSQL安装之Windows官网地址PostgreSQL概述Windows上安装PostgreSQL更新计划 PostgreSQL安装之Windows 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreSQL概…...

3-【PS让图片动起来】系列1-【导入素材】

【问题介绍】仅做图片&#xff0c;现在很难吸引用户视线&#xff0c;越来越多地图片需要动起来增添意境&#xff0c;比如春日樱花花瓣掉落、冬季雪花纷纷&#xff0c;今天来学学怎么用PS的时间轴&#xff0c;让图片动起来~ 如下图&#xff0c;一副冬日雪景图&#xff0c;想给画…...

基于Java+SpringBoot+Mybaties+layui+Vue+elememt 实习管理系统 的设计与实现

一.项目介绍 前台功能&#xff1a;用户进入系统可以实现首页&#xff0c;系统公告&#xff0c;个人中心&#xff0c;后台管理等功能进行操作 后台由管理员&#xff0c;实习单位&#xff0c;教师和学生&#xff0c;主要功能包括首页&#xff0c;个人中心&#xff0c;班级管理&am…...

非关系型数据库——Redis基本操作

目录 一、Redis数据库常用命令 1.Set——存放数据 2.Get——获取数据 3.Keys——获取符合条件的键值 4.Exists——判断键值是否存在 5.Del——删除指定键值 6.Type——获取键值对应的类型 7.Rename——对已有键值重命名&#xff08;覆盖&#xff09; 8.Renamenx——对…...

golang语言和JAVA对比

引言: 在当今的软件开发领域,有许多编程语言供开发人员选择。其中,Golang和Java是两种备受开发者青睐的语言。本文将探讨Golang和Java之间的比较和对比,分析它们在语言特性、性能、平台支持、社区和生态系统、开发效率和可维护性等方面的异同。 一、语言特性和性能 Golang…...

隐私计算实训营学习九:隐语多方安全计算在安全核对的行业实践

文章目录 一、业务背景&#xff1a;安全核对产生的土壤二、产品方案&#xff1a;从试点到规模化的路三、技术共建&#xff1a;与隐语的共同成长 一、业务背景&#xff1a;安全核对产生的土壤 业务背景&#xff1a;很多粗放使用数据的方式被新出台的法律法规所规范&#xff0c;…...

C#实现只保存2天的日志文件

文章目录 业务需求代码运行效果 欢迎讨论&#xff01; 业务需求 在生产环境中&#xff0c;控制台窗口不便展示出来。 为了在生产环境中&#xff0c;完整记录控制台应用的输出&#xff0c;选择将其输出到文件中。 但是&#xff0c;存储所有输出的话会占用很多空间&#xff0c;…...

C++ 类和对象(中篇)

类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。空类中什么都没有吗&#xff1f;并不是的&#xff0c;任何一个类在我们不写的情 况下&#xff0c;都会自动生成下面6个默认成员函数。 构造函数&#xff1a; 定义&#xff1a;构造函数是一个特殊的成员…...

可视化场景(9):智慧看板,可能是最直观的数据展示

10年经验的大数据可视化和数字孪生老司机&#xff0c;该领域的专家&#xff0c;是您可信赖的技术合伙人&#xff0c;分享该领域的项目和作品&#xff0c;欢迎互动交流。 hello&#xff0c;我是贝格前端工场&#xff0c;本期分享可视化大屏在安全生产与设备运维场景的应用&#…...

加密算法(二)

1、SHA-256加密算法&#xff1a; package com.arithmetic.encryption; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; //使用java.security.MessageDigest类来进行SHA-256摘要的计算。 //通过getInstance("SHA-256")方法获取…...

大创项目推荐 深度学习 YOLO 实现车牌识别算法

文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 该项目较…...

IP知识详解

IP基本认识 IP 在 TCP/IP 参考模型中处于第三层&#xff0c;也就是网络层。 网络层的主要作用是&#xff1a;实现主机与主机之间的通信&#xff0c;也叫点对点&#xff08;end to end&#xff09;通信。 网络层与数据链路层有什么关系呢&#xff1f; IP 的作用是主机之间通信…...

设计模式:适配器模式

定义 适配器模式&#xff08;Adapter Pattern&#xff09;&#xff0c;也称为包装器&#xff08;Wrapper&#xff09;模式&#xff0c;是一种结构型设计模式&#xff0c;它允许不兼容的接口之间进行交互。适配器模式通过包装一个已有的类&#xff0c;提供一个与原系统兼容的接…...

大语言模型落地的关键技术:RAG

1、什么是RAG&#xff1f; RAG 是检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09;的简称&#xff0c;是当前最火热的大语言模型应用落地的关键技术&#xff0c;主要用于提高语言模型的效果和准确性。它结合了两种主要的NLP方法&#xff1a;检索&#xff…...

ffmpeg Android 笔记

目录 没有示例项目 编译好的.a文件 ffmpegandroid 延时有220ms rk官方有例子 ffmpeg Android 笔记 没有示例项目 编译好的.a文件 FFmpeg-Android/ffmpeg-android-aarch64-34/lib at main yhbsh/FFmpeg-Android GitHub ffmpegandroid 看到了音频解码器 FFmpegAndroid/a…...

3分钟掌握百度网盘秒传技术:彻底解决文件分享失效难题

3分钟掌握百度网盘秒传技术&#xff1a;彻底解决文件分享失效难题 【免费下载链接】rapid-upload-userscript-doc 秒传链接提取脚本 - 文档&教程 项目地址: https://gitcode.com/gh_mirrors/ra/rapid-upload-userscript-doc 在数字化协作时代&#xff0c;百度网盘秒…...

电池创新如何跨越量产鸿沟:从实验室到工厂的工程化实践

1. 从实验室到工厂&#xff1a;电池创新的“量产魔咒”最近几年&#xff0c;电池行业绝对是资本和媒体眼中的“香饽饽”。动辄数十亿、上百亿美元的投资砸向新的生产设施和前沿技术&#xff0c;目标直指电动汽车、智能电网乃至整个智慧城市的能源基石。新闻稿里&#xff0c;我们…...

大模型API响应延迟飙升470%,却查不到根因?SITS2026可观测性四象限诊断法,今天就落地

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;SITS2026可观测性框架的起源与核心范式 SITS2026&#xff08;System Intelligence Telemetry Standard 2026&#xff09;并非凭空诞生&#xff0c;而是源于云原生系统在超大规模微服务编排、边缘-中心协…...

Honey Select 2一站式智能优化方案:HS2-HF Patch高效整合200+插件

Honey Select 2一站式智能优化方案&#xff1a;HS2-HF Patch高效整合200插件 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为《Honey Select 2》的翻译不…...

Midjourney蓝莓印相技术白皮书(2024V2.3权威修订版):基于1726张A/B测试图谱验证的色阶偏移阈值与CMYK映射规则

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney Blueberry印相技术的演进脉络与核心定义 Midjourney Blueberry印相技术并非官方术语&#xff0c;而是社区对Midjourney V6中基于蓝光敏感通道&#xff08;Blue Channel Emulation&#xff0…...

Spring Boot + JWT 实现无状态认证

1. JWT JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络应用环境间安全地将信息作为 JSON 对象传输。JWT 是目前最流行的跨域认证解决方案&#xff0c;特别适合前后端分离的架构。 1.1 JWT 的结构 JWT 由三…...

别再只调参了!搞懂MaxPool2D的padding=‘same‘和‘valid‘,让你的CNN模型效果立竿见影

别再只调参了&#xff01;搞懂MaxPool2D的paddingsame和valid&#xff0c;让你的CNN模型效果立竿见影 在构建卷积神经网络&#xff08;CNN&#xff09;时&#xff0c;许多开发者习惯性地将注意力集中在卷积核大小、激活函数选择等显性参数上&#xff0c;却常常忽略池化层中padd…...

别再到处找激活码了!手把手教你用vlmcsd在Windows上自建KMS服务器(附各版本密钥)

企业级Windows批量激活解决方案&#xff1a;安全高效的本地KMS部署指南 在数字化办公环境中&#xff0c;批量激活Windows操作系统一直是IT管理员面临的常见挑战。传统单机激活方式效率低下&#xff0c;而依赖外部KMS服务器又存在连接不稳定、隐私泄露等潜在风险。本文将深入探讨…...

如何快速上手Unitree Go2 ROS2 SDK:模块化机器人开发完整指南

如何快速上手Unitree Go2 ROS2 SDK&#xff1a;模块化机器人开发完整指南 【免费下载链接】go2_ros2_sdk Unofficial ROS2 SDK support for Unitree GO2 AIR/PRO/EDU 项目地址: https://gitcode.com/gh_mirrors/go/go2_ros2_sdk Unitree Go2 ROS2 SDK是为宇树科技GO2系列…...

拆解LCD12864串行时序:用STM32的GPIO模拟,一步步带你读懂那张时序图

深入解析LCD12864串行通信&#xff1a;用STM32 GPIO模拟时序的实战指南 在嵌入式开发中&#xff0c;液晶显示模块(LCD)是常见的人机交互界面&#xff0c;而LCD12864因其价格适中、显示内容丰富等特点被广泛使用。不同于简单的复制粘贴代码&#xff0c;真正理解其底层通信协议才…...