【Golang】slice切片
sliceGo语言的切片是对数组的抽象。数组的使用package main import ( fmt ) // 传递固定长度的数组还是值传递的方式 func printArray(myArray [5]int) { for index, value : range myArray { fmt.Println(index:, index, value:, value) } } func main() { var myArr [5]int myArr2 : [10]int{1, 2, 3, 4} myArr3 : [4]int{1, 2, 3, 4} myArr4 : []int{1, 2, 3, 4} for i : 0; i len(myArr); i { fmt.Println(myArr[i]) } for index, value : range myArr2 { fmt.Println(index:, index, value:, value) } fmt.Printf(myArr1 type%T , myArr) fmt.Printf(myArr2 type%T , myArr2) fmt.Printf(myArr3 type%T , myArr3) }注意数组传递的参数是以值拷贝的形式进行传递如下在函数中修改了但在主函数中并没有变化package main import ( fmt ) // 传递固定长度的数组还是值传递的方式 func printArray(myArray [5]int) { for index, value : range myArray { fmt.Println(index:, index, value:, value) } myArray[0] 15 } func main() { myArr2 : [5]int{1, 2, 3, 4} printArray(myArr2) fmt.Println() for index, value : range myArr2 { fmt.Println(index:, index, value:, value) } }Go数组的长度不可改变在特定的场景中这样的集合就不太适合了Go中就提供了内置类型切片(动态数组)与数组相比切片的长度是不固定的可以追加时可能使得切片的容量增大。定义切片可以声明一个未指定大小的数组来定义切片**切片不需要说明长度。**var identifier []type使用make()函数来创建切片:var slice1 []type make([]type, len) 也可以简写为 slice1 : make([]type, len) //也可以指定容量其中capacity为可选参数。 make([]T, length, capacity)切片的四种初始化的方式package main import fmt func main() { //声明slice是一个切片并且初始化默认值是123长度是len3 slice1 : []int{1, 2, 3} //声明slice是一个切片但是并没有为slice分配空间 var slice2 []int slice2 make([]int, 10, 15) slice2[0] 100 //声明slice是一个切片同时给slice分配3个空间初始化值是0 var slice3 []int make([]int, 10) //声明slice是一个切片同时为slice分配空间10个空间初始化值是0通过:推导出slice是一个切片 slice4 : make([]int, 10) fmt.Printf(len%d,slice%v , len(slice1), slice1) fmt.Printf(len%d,slice%v,cap%d , len(slice2), slice2, cap(slice2)) fmt.Printf(len%d,slice%v , len(slice3), slice3) fmt.Printf(len%d,slice%v , len(slice4), slice4) }切片的追加截取与拷贝切片示意图追加如果想增加切片的容量我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来长度增加后超过容量则容量增加2倍package main import fmt func main() { var numbers make([]int, 3, 5) fmt.Printf(len%d,cap%d,slice%v , len(numbers), cap(numbers), numbers) numbers append(numbers, 1) fmt.Printf(len%d,cap%d,slice%v , len(numbers), cap(numbers), numbers) numbers append(numbers, 1) numbers append(numbers, 1) fmt.Printf(len%d,cap%d,slice%v , len(numbers), cap(numbers), numbers) }截取s : []int{1, 2, 3} //左闭右开 s1 : s[0:2] s1[0] 100 s[1] 200 fmt.Printf(len%d,cap%d,slice%v , len(s), cap(s), s) fmt.Printf(len%d,cap%d,slice%v , len(s1), cap(s1), s1)拷贝截取是采用的浅拷贝是指向的同一个地址。如果要深拷贝。可以使用copy函数s : []int{1, 2, 3} var s1 make([]int, 3) copy(s1, s) s1[0] 100 fmt.Printf(len%d,cap%d,slice%v , len(s), cap(s), s) fmt.Printf(len%d,cap%d,slice%v , len(s1), cap(s1), s1)

相关新闻

【Golang】——Gin 框架中的表单处理与数据绑定

【Golang】——Gin 框架中的表单处理与数据绑定

在 Web 应用开发中,表单是用户与服务器交互的重要手段。Gin 框架对表单处理提供了高效便捷的支持,包括数据绑定、验证等功能。在本篇博客中,我们将详细介绍如何使用 Gin 框架处理表单数据,涵盖基础操作与进阶技巧,帮助…

2026/5/17 10:25:28 阅读更多 →
常用的linux内核优化方法

常用的linux内核优化方法

Linux 内核优化是一个系统工程,通常涉及性能调优、安全加固和资源管理三个方面。以下是针对不同场景的常用优化方法,你可以根据实际需求(如高并发、低延迟、高吞吐量)进行选择。 1. 网络性能优化(针对高并发/高吞吐量) 网络性能是服务器最常见的瓶颈,主要优化 TCP/IP …

2026/7/4 13:14:04 阅读更多 →
Vue——小白也能学!Day2

Vue——小白也能学!Day2

1.指令修饰符所谓指令修饰符就是通过“.”指明一些指令后缀 不同的后缀封装了不同的处理操作 —> 简化代码①按键修饰符keyup.enter →键盘回车监听②v-model修饰符v-model.trim →去除首尾空格v-model.number →转数字③事件修饰符事件名.stop →阻止冒泡事件名…

2026/7/3 11:22:47 阅读更多 →

最新新闻

符合出口标准的胡萝卜种子如何挑选抗逆品种?2026 种植采购实操指南

符合出口标准的胡萝卜种子如何挑选抗逆品种?2026 种植采购实操指南

很多从事胡萝卜规模化种植,特别是瞄准出口市场的技术负责人和种植户,经常面临一个核心困境:如何在海量的种子品种中,精准筛选出兼具抗逆性、商品性和高产潜力的品种,并构建一套可复制的稳产方案?市面上的营…

2026/7/5 3:04:55 阅读更多 →
大气散射模型 OpenCV 4.8 去雾实战:单张图像 0.5 秒内透射率图估计

大气散射模型 OpenCV 4.8 去雾实战:单张图像 0.5 秒内透射率图估计

基于暗通道先验的实时去雾算法:OpenCV 4.8 工程实现详解清晨的浓雾常常让摄影作品失去应有的色彩与细节,而计算机视觉领域的去雾算法正是解决这一问题的利器。本文将带您深入浅出地实现一个基于暗通道先验的高效去雾系统,仅用不到0.5秒即可完…

2026/7/5 3:04:55 阅读更多 →
靠谱的区域教育一体化管理平台哪个排名高

靠谱的区域教育一体化管理平台哪个排名高

在当今信息化时代,教育行业的数字化转型已经成为必然趋势。区域教育一体化管理平台作为提升教育管理水平、优化教育资源配置的重要工具,受到了越来越多教育机构的关注。然而,在众多的教育管理平台中,如何选择一个既可靠又高效的平…

2026/7/5 3:04:55 阅读更多 →
多重共线性实战指南:识别、归因与工程化解法

多重共线性实战指南:识别、归因与工程化解法

1. 项目概述:为什么多重共线性不是“错误”,而是数据在说话你刚跑完一个线性回归模型,R高达0.92,F检验p值小于0.001,一切看起来都很漂亮——直到你扫了一眼系数表:某个自变量的系数是3.7,标准误…

2026/7/5 3:02:54 阅读更多 →
云原生技术28-K8s排障实战:20个常见问题的快速定位与解决,从CrashLoopBackOff到Running的完整指南

云原生技术28-K8s排障实战:20个常见问题的快速定位与解决,从CrashLoopBackOff到Running的完整指南

1、AI程序员系列文章 2、AI面试系列文章 3、AI编程系列文章 目录 排障思维:从"盲人摸象"到"精准定位" 2.1 自上而下 vs 自下而上 2.2 假设验证法 2.3 二分法定位 Pod问题:四大金刚的"病历本" 3.1 CrashLoopBackOff&…

2026/7/5 3:00:53 阅读更多 →
Codex 实战:AI 编程助手接入真实项目,用真实案例讲清边界

Codex 实战:AI 编程助手接入真实项目,用真实案例讲清边界

聊《Codex 实战:AI 编程助手接入真实项目,用真实案例讲清边界》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要这篇面向想用 AI 提升研发效率的开发者和技术负责人,但不会把“…

2026/7/5 3:00:53 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻