go语言初识(四)

本博客涉及内容:数组

数组

数组定义

在 go 语言中,数组是一种固定大小的数据结构,用于存储相同类型的元素。数组的定义方式如下:

var arrayName [size]Type

可以通过len()函数测试数组的长度:

func main() {var a [10]intfmt.Println(len(a))
}

当定义完数组a后,就在内存中开辟了10个连续的存储空间,每个数据都存储在相应的空间中,数组包含的每个数据被称为数组元素(element),一个数组包含的元素个数成为数组的长度。
【注】
数组的长度只能是常量。

1. 数组赋值

数组定义完成后,可以对数组进行赋值操作。数组是通过下标来进行操作的,下标范围是从0开始到数组长度减1的位置。

完成数组赋值的第一种方式

//	完成数组赋值的第一种方式a[0] = 100a[1] = 200a[2] = 300a[3] = 400a[4] = 500a[5] = 600a[6] = 700a[7] = 800a[8] = 900a[9] = 1000

完成数组赋值的第二种方式

for i := 0; i < 10; i++ {a[i] = i}

【注】如果数组不进行赋值,默认全是0

2. 数组初始化

在定义数组时,也可以完成赋值,这种情况叫做数组的初始化。

// 全部初始化var b [5]int = [5]int{1, 2, 3, 4, 5}fmt.Println(b)c := [5]int{1, 2, 3, 4, 5}fmt.Println(c)// 部分初始化,没有初始化的元素,自动赋值为0d := [5]int{1, 2, 3}fmt.Println(d)// 指定某个元素初始化e := [5]int{2: 10, 4: 20}fmt.Println(e)

3. 数组求值

练习一:从一个整数数组中取出最大的整数,最小整数,总和、平均值。

func main() {/*练习1:从一个整数数组中取出最大的整数、最小整数、总和、平均值1、全部初始化2、声明两个变量来存储最大值和最小值3、循环数组,将数组中的每个元素值与最大值和最小值进行比较*/var a [6]int = [6]int{1, 2, 3, 4, 5, 6}var max int = a[0]var min int = a[0]var sum int //存储和for i := 0; i < len(a); i++ {if max < a[i] {max = a[i]}if min > a[i] {min = a[i]}sum += a[i]}fmt.Printf("max: %d, min: %d, sum: %d\n", max, min, sum)
}

首先我们先初始化一个数组,然后定义两个变量maxmin分别存储最大值和最小值。将a[0]赋值给它们是因为变量未赋值的时候默认零值。使用for进行循环,在循环的过程中进行判断,如果a[i]>max,则将a[i]的值赋值给max(min同理)。最后使用fmt.Printf进行格式化输出。
练习二:将数组中的元素进行分割。

names := [...]string{"罗辑", "史强", "叶文洁", "章北海"}var str stringfor i := 0; i < len(names)-1; i++ {str += names[i] + "|"}fmt.Println(str + names[len(names)-1])

使用for循环将其中的各个数组单独取出来。

4. 数组逆置

将一个字符串的元素顺序进行反转。

func main() {a := []int{1, 2, 3, 4, 5}var temp int // 定义中间变量,负责交换for i := 0; i < len(a)/2+1; i++ {temp = a[i]a[i] = a[len(a)-i-1]a[len(a)-i-1] = temp}fmt.Println(a)
}

定义一个临时变量用于交换,注意在for循环中是循环到中间加一的部分,而不是完成整个循环。

5.冒泡排序

具体的请参考B站视频

func main() {var num [10]int = [10]int{12, 2, 3, 45, 51, 6, 37, 28, 19, 10}var temp int = num[0]for i := 0; i < len(num); i++ {for j := 0; j < len(num)-i-1; j++ {if num[j] < num[j+1] {temp = num[j]num[j] = num[j+1]num[j+1] = temp}}}fmt.Println(num)
}

6.数组作为函数参数

数组也可以像变量一样,作为参数传递给函数。用法如下:

package mainimport "fmt"/*
数组作为参数进行传递
*/func modify(a [5]int) {a[0] = 100 // 修改a[0]的值fmt.Println("modify a:", a[0])
}
func main() {a := [5]int{1, 2, 3, 4, 5}modify(a)fmt.Println(a)
}

但是输出结果并没有影响到原来的值,涉及到值传递和引用传递,指针会对这个问题进行说明。也可参考C语言指针。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二.对配置文件中数据库密码进行加密

代码&#xff1a; public class DruidEncryptUtils {private static String publicKey;private static String privateKey;static {try {String[] keyPair ConfigTools.genKeyPair(512);privateKey keyPair[0];System.out.println("privateKey:"privateKey);publi…

Docker Hub注册及上传自定义镜像

说明&#xff1a;本文介绍如何注册Docker Hub&#xff0c;及将自己自定义镜像上传到Docker Hub上&#xff1b; 注册Docker Hub 浏览器输入&#xff1a;http://hub.docker.com/&#xff0c;进入Docker Hub官网 注&#xff1a;如果无法访问&#xff0c;可在GitHub上下载一个Ste…

Git--本地仓库

文章目录 工作区和暂存区工作区&#xff08;Working Directory&#xff09;版本库&#xff08;Repository&#xff09; 初始化git仓库添加文件到版本库步骤 查看修改内容查看工作区和暂存区状态已add文件已修改/新增 的未add文件git跟踪修改原理 查看提交历史版本回退撤销修改撤…

如何解决Redis缓存雪崩问题?

解决Redis缓存雪崩问题,可以从多个方面入手来确保系统在高并发和缓存失效时能够保持稳定运行。以下是一些具体的解决策略: 合理设置缓存过期时间: 避免大量缓存设置相同的过期时间,这样会导致在某一时刻缓存同时失效,造成缓存雪崩。可以使用Redis的EXPIRE命令或TTL命令,结…

白话文docker-002

第三章&#xff1a;Docker镜像的使用与管理 引言 Docker镜像是Docker生态中的核心组件&#xff0c;它们是轻量级的、可执行的软件包&#xff0c;包含了运行一个应用所需的所有内容。在本章中&#xff0c;我们将深入探讨如何创建和修改Dockerfile来构建镜像&#xff0c;获取、…

python基础(1) -- 基本数据类型与变量

基本数据类型与变量 1.1注释 优点&#xff1a; 1.代码说明 2.不让解释器执行注释的那句话 1.1.1 单行数据 语法&#xff1a; # #开头后面都是注释&#xff0c;python解释器会忽略掉注释 单行注释快捷键&#xff1a;ctrl&#xff1f;1.1.2 多行注释 """ &qu…

信息学奥赛初赛天天练-12-数论-整除问题

更多资源请关注纽扣编程微信公众号 整除的性质 1 整除性 若 &#x1d44e; 和 &#x1d44f; 都为整数&#xff0c; &#x1d44e; 整除 &#x1d44f; 是指 &#x1d44f; 是 &#x1d44e; 的倍数&#xff0c;&#x1d44e; 是 &#x1d44f; 的约数&#xff08;或者叫 因…

Vue 2与Vue 3的区别

1. 生命周期函数 Vue 2中的生命周期钩子以.created(), .mounted(), .updated()等形式存在&#xff0c;而在Vue 3中&#xff0c;这些钩子函数被重构为更符合Composition API的设计理念&#xff0c;使用了新的命名约定&#xff0c;如onBeforeMount, onMounted, onUpdated等。此外…

基于Arduino IDE的ESP32开发环境搭建

文章目录 一. Arduino IDE安装二. Arduino IDE安装ESP开发包 一. Arduino IDE安装 Arduino官网下载IDE软件 解压下载好的安装包&#xff0c;以管理员身份运行Arduino IDE软件 IDE第一次启动会安装各种驱动&#xff0c;直接点击确定就行 二. Arduino IDE安装ESP开发包 将…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-22讲 RTC 时钟设置

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

头歌结构化分析方法-数据流图

第1关&#xff1a;数据流图-画出外部实体 第2关&#xff1a;数据流图-画出加工 第3关&#xff1a;数据流图-画出数据存储 第4关&#xff1a;数据流图-画出数据流 第5关&#xff1a;数据流图-机票预定系统

【Python】 使用SMOTE解决数据不平衡问题

原谅把你带走的雨天 在渐渐模糊的窗前 每个人最后都要说再见 原谅被你带走的永远 微笑着容易过一天 也许是我已经 老了一点 那些日子你会不会舍不得 思念就像关不紧的门 空气里有幸福的灰尘 否则为何闭上眼睛的时候 又全都想起了 谁都别说 让我一个人躲一躲 你的承诺 我竟然没怀…

VXLAN小结

1.VXLAN:(组件虚拟网络的架构核心)虚拟扩展本地局域网&#xff0c;通过隧道的形式&#xff0c;将物理上有隔离的资源&#xff0c;在逻辑上连通起来&#xff0c;使其二层互通。 a.物理网络:指的是构成 VXLAN 连接的基础 IP 网络 b.逻辑网络:指的是通过 VXLAN 构建的虚拟网络 C.N…

DragonKnight CTF2024部分wp

DragonKnight CTF2024部分wp 最终成果 又是被带飞的一天&#xff0c;偷偷拷打一下队里的pwn手&#xff0c;只出了一题 这里是我们队的wp web web就出了两个ez题&#xff0c;确实很easy&#xff0c;只是需要一点脑洞(感觉)&#xff0c; ezsgin dirsearch扫一下就发现有ind…

(九)npm 使用

视频链接:尚硅谷2024最新版微信小程序 文章目录 使用 npm 包自定义构建 npmVant Weapp 组件库的使用Vant Weapp 组件样式覆盖使用 npm 包 目前小程序已经支持使用 npm 安装第三方包,因为 node_modules 目录中的包不会参与小程序项目的编译、上传和打包, 因此在小程序项目中要…

ROS参数服务器

一、介绍 参数服务器是用于存储和检索参数的分布式多机器人配置系统&#xff0c;它允许节点动态地获取参数值。 在ROS中&#xff0c;参数服务器是一种用于存储和检索参数的分布式多机器人配置系统。它允许节点动态地获取参数值&#xff0c;并提供了一种方便的方式来管理和共享配…

基于Python Selenium web测试工具 - 基本用法详解

这篇文章主要介绍了Selenium&#xff08;Python web测试工具&#xff09;基本用法,结合实例形式分析了Selenium的基本安装、简单使用方法及相关操作技巧,需要的朋友可以参考下 本文实例讲述了Selenium基本用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; Seleni…

react之Effect的生命周期

第四章 - 脱围机制 响应式 Effect 的生命周期 Effect与组件有不同的生命周期。组件可以挂载&#xff0c;更新或卸载。Effect只能做两件事&#xff1a;开始同步某些东西&#xff0c;然后停止同步它。如果Effect依赖于随时间变化的props 和 state&#xff0c;这个循环可能会发生…

如何查看热门GPT应用?

1、登陆chatgpt 2、访问 https://chatgpt.com/gpts 3、在该界面&#xff0c;可以搜索并使用image generator, Write For Me&#xff0c;Language Teature等热门应用。