3.golang数组以及切片
数组
数组的声明
数组是具有相同 唯一类型 的一组以编号且长度固定的数据项序列。一个数组的表示形式为 T[n]。n 表示数组中元素的数量,T 代表每个元素的类型。
var a [3]int
fmt.Println(a)
var a[3]int 声明了一个长度为 3 的整型数组。数组中的所有元素都被自动赋值为数组类型的零值。 运行上述程序将输出 [0 0 0]
数组的赋值
数组的索引从0开始到length - 1结束,进而根据索引给数组赋值。
var a [3]int
a[1] = 18
a[2] = 19
fmt.Println(a)
给数组a索引为1的位置赋值18,索引2的位置赋值19,从而运行上述程序将输出 [0 18 19]
a := [3]int{1, 3, 4}
以上简写模式,在定义的同时给出了赋值。
a := [...]int{1, 3, 4}
可以忽略声明数组的长度,并用 … 代替,让编译器为你自动计算长度。
数组的复制
Go 中的数组是值类型而不是引用类型。这意味着当数组赋值给一个新的变量时,该变量会得到一个原始数组的一个副本。如果对新变量进行更改,则不会影响原始数组。
a := [...]int{1, 3, 4}
b := a
b[2] = 19
fmt.Println(a, b)
在上面程序中,a的副本被赋给b。b 的索引为2的元素改为19。这不会在原始数组 a 中反映出来。该程序将输出 [1 3 4] [1 3 19]
数组的遍历
for 循环可用于遍历数组中的元素。
a := [...]int{1, 3, 4}
for i := 0; i < len(a); i++ {fmt.Printf(strconv.Itoa(i) + ":" + strconv.Itoa(a[i]))fmt.Printf("/")
}
Go 提供了一种更好、更简洁的方法,通过使用 for 循环的 range 方法来遍历数组。range 返回索引和该索引处的值。
a := [...]int{1, 3, 4}
for i, v := range a {fmt.Printf(strconv.Itoa(i) + ":" + strconv.Itoa(v))fmt.Printf("/")
}
多维数组
go支持声明多维数组。
a := [3][2]int{{1, 1},{2, 2},{3, 3},
}
fmt.Print(a)
该程序将输出 [[1 1] [2 2] [3 3]]
切片
切片(slice)是对数组一个连续片段的引用,所以切片是一个引用类型。切片是一个 长度可变的数组。
创建切片
a := [5]int{76, 77, 78, 79, 80}
var b []int = a[1:4]
fmt.Print(b)
使用语法 a[start:end] 创建一个从 a 数组索引 start 开始到 end - 1 结束的切片。因此,a[1:4] 为从索引 1 到 3 创建了 a 数组的一个切片表示。因此, 切片 b的值为 [77 78 79]。
便捷创建切片
c := []int{6, 7, 8}
fmt.Println(c)
在上面程序中,c:= [] int {6,7,8} 创建一个有 3 个整型元素的数组,并返回一个存储在 c中的切片引用。
切片的修改
切片自己不拥有任何数据。它只是底层数组的一种表示。对切片所做的任何修改都会反映在底层数组中。
a := [5]int{76, 77, 78, 79, 80}
b := a[1:4]
fmt.Println("before", a)
for i, _ := range b {b[i]++
}
fmt.Println("after", a)
for 循环将这些索引中的值逐个递增。当重新使用 for 循环打印数组时,可以看到对切片的更改反映到了数组中。该程序的输出为:
before [76 77 78 79 80]
after [76 78 79 80 80]
切片的长度
len()是获取切片底层数组的长度,cap()获取切片的长度。
a := [5]int{76, 77, 78, 79, 80}
b := a[1:4]
fmt.Println("len", len(b))
fmt.Println("cap", cap(b))
该程序输出为 len 3 cap 4。
切片追加元素
数组的长度是固定的,它的长度不能增加。切片是动态的,使用append()可以将新元素追加到切片上。
a := [5]int{76, 77, 78, 79, 80}
b := a[1:4]
b = append(b, 8)
fmt.Println(b)
该程序输出为 [77 78 79 8]。
相关文章:
3.golang数组以及切片
数组 数组的声明 数组是具有相同 唯一类型 的一组以编号且长度固定的数据项序列。一个数组的表示形式为 T[n]。n 表示数组中元素的数量,T 代表每个元素的类型。 var a [3]int fmt.Println(a)var a[3]int 声明了一个长度为 3 的整型数组。数组中的所有元素都被自动…...
ElasticSearch02
ElasticSearch客户端操作 ElasticSearch 版本:7.8 学习视频:尚硅谷 笔记:https://zgtsky.top/ 实际开发中,主要有三种方式可以作为elasticsearch服务的客户端: 第一种,使用elasticsearch提供的Restful接口…...
比特币挖矿过程,双花攻击,女巫攻击,DID聚合身份
目录 比特币挖矿过程 双花攻击 双花攻击的原理 双花攻击的类型 双花攻击防范措施:...
加载minio中存储的静态文件html,不显示样式与js
问题描述:点击链接获取的就是纯静态文件,但是通过浏览器可以看到明明加载了css文件与js文件 原因:仔细看你会发现加载css文件显示的contentType:text/html文件,原来是minio上传文件时将所有文件的contentType设置成了text/html 要在上传时指定文件,根据文章的类型指定的Conten…...
kali安装内网穿透工具并实现ssh远程连接
文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh远程连接kali 1…...
机器学习探索计划——KNN实现Iris鸢尾花分类
文章目录 1. 加载数据集2.拆分数据集3.预测4.评价 1. 加载数据集 import numpy as np from sklearn import datasetsiris datasets.load_iris()iris.keys()dict_keys([data, target, frame, target_names, DESCR, feature_names, filename, data_module])X iris.data X.shap…...
鸿蒙(HarmonyOS)应用开发——装饰器
简介 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,扩展了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用。TS是JavaScript(简称JS)的超…...
使用脚手架创建Vue3项目
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Vue ✨特色专栏: MySQL学习…...
SpringBoot 2 系列停止维护,Java8 党何去何从?
SpringBoot 2.x 版本正式停止更新维护,官方将不再提供对 JDK8 版本的支持 SpringBoot Logo 版本的新特性 3.2 版本正式发布,亮点包括: 支持 JDK17、JDK21 版本 对虚拟线程的完整支持 JVM Checkpoint Restore(Project CRaC&…...
Cadence Vmanager vsif文件编写指南(持续更新...)
目录 1.NTF格式介绍 1.1.1 {属性:值}定义 1.1.2类别 1.1.3语法 2.vsif文件中有效的container 2.1 session {…} 1.NTF格式介绍 Cadence的Vmanager工具采用vsif类型的文件作为regression的输入文件,采用vplanx/csv类型的文件作为vplan的输入文件&am…...
html实现我的故乡,城市介绍网站(附源码)
文章目录 1. 我生活的城市北京(网站)1.1 首页1.2 关于北京1.3 北京文化1.4 加入北京1.5 北京景点1.6 北京美食1.7 联系我们 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43…...
外汇天眼:嘿!他们说这个比赛有手就能赢,你敢不敢来试试?
在外汇市场的波涛汹涌中,一场引人注目的模拟交易比赛正在悄然展开,参与者们纷纷聚焦,听所有获奖的参赛投资者们说:这个比赛有手就能赢,你敢不敢来试试? 比赛规则简单而富有挑战性。你只需在外汇天眼APP开通…...
“智”护城市生命线,宏电亮相第十届中国(上海)国际管网展
11月22-24日,第十届中国(上海)国际管网展览会在国家会展中心盛大举办,展会旨在配合推进国家基础建设工作,推动管网改造建设,汇聚了三百余家优秀企业参展,展示产品及技术覆盖管网建设、智慧水务、…...
在线音频视频剪辑网站推荐
123apps: Online MP3 Cutter - Cut Songs, Make Ringtones...
Math Functions 数学函数
Math Functions 数学函数 Use the math functions that your database offers whenever possible. 尽可能使用数据库提供的数学函数。 Internally, PeopleCode assigns types to numeric values. Calculations for the Decimal type are processed in arrays to ensure dec…...
Javaweb之Axios的详细解析
1.3.3 请求方法的别名 Axios还针对不同的请求,提供了别名方式的api,具体如下: 方法描述axios.get(url [, config])发送get请求axios.delete(url [, config])发送delete请求axios.post(url [, data[, config]])发送post请求axios.put(url [, data[, con…...
Jenkins Pipeline应用实践
Jenkins Pipeline是一种可编程的、可扩展的持续交付管道,允许您使用脚本来定义整个软件交付过程。 以下是使用Jenkins Pipeline创建和配置流水线的基本步骤。 Part 01. 创建一个Pipeline Job 在Jenkins中创建一个新的"Pipeline"类型的Job。 以下是在Je…...
给经销商开发信怎么写?做商务邮件的技巧?
如何写给经销商的开发信?代理商的外贸开发信模板? 一封令人信服的经销商开发信能够在商业世界中起到至关重要的作用。蜂邮EDM将为您介绍如何撰写一封引人注目且有说服力的经销商开发信,确保您的合作伙伴对您的业务充满信心。 经销商开发信&…...
测试架构师必备技能-Nginx安装部署实战
Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的免费开源Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高并发访问的情况下,Nginx是Apache服务器不错的替代品。官网数据显示每秒TPS高达50W左右。本文为读者朋…...
linux 账号管理实例一,stdin,passwd复习
需求 账号名称全名次要用户组是否可登录主机密码 myuser1 1st usermygroup1yespasswordmyuser22st usermygroup1yespasswordmyuser33st user无nopassword 第一:用户,和用户组创建,并分配有效用户组(初始用户组是passwd里…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...
【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...
