首页 > 其他分享 >数组的使用和细节

数组的使用和细节

时间:2024-01-23 11:11:06浏览次数:31  
标签:index int fmt 细节 numArr04 数组 使用 var

数组
数组是可以存放多个同一类型的数据。在GO中,数组是值类型。也是一种数据结构。
数组的简单案例:

func main() {
	//定义一个数组
	var hens [3]float64
	//给数组每一个元素赋值 从下标为0开始  共3个元素
	hens[0] = 1.0
	hens[1] = 2.0
	hens[2] = 3.0

	//遍历数组
	var totalWeight float64 = 0
	for i := 0; i < 3; i++ {
		totalWeight += hens[i]
	}
	//求出平均体重
	avgWeight := fmt.Sprintf("%.2f", totalWeight/float64(len(hens)))
	fmt.Printf("数组每个元素合计:%v,平均值为:%v", totalWeight, avgWeight)
}

数组的定义
var 数组名字 [数组大小]数组中数据类型
var a [5]int
数组a可以放5个int类型的数据。赋值:a[0]=1 a[1]=2 .....

  1. 数组的地址可以通过数组名获取 &变量名。
  2. 数组的第一个元素的地址,就是数组的地址。
  3. 数组的各个元素的地址间隔是依据数组的类型决定的,比如int64->8字节 int32->4字节....

四种初始化数组的方式

	//方式1
	var numArr01 [3]int = [3]int{1, 2, 3}
	fmt.Println("numArr01=", numArr01)

	//方式2
	var numArr02 = [3]int{1, 2, 3}
	fmt.Println("numArr02=", numArr02)

	//方式3  这里的...是固定写法不能改
	var numArr03 = [...]int{1, 2, 3}
	fmt.Println("numArr03=", numArr03)

	//方式4  索引值:索引对应的值
	var numArr04 = [...]int{1: 100, 0: 200, 2: 300}
	fmt.Println("numArr04=", numArr04)

	//方式5  类型推导
	numArr05 := [...]string{2: "tom", 1: "mary", 0: "jack"}
	fmt.Println("numArr05=", numArr05)

数组的变量 for range
for range的基本语法

for index,value := range array{
    ....
}
  1. index是数组的下标。
  2. value是该下标位置的值。
  3. index和value仅在for循环内部可见的局部变量。
  4. 遍历数组的时候,如果不想使用index,可以直接把下标index标记为下划线_。
  5. index和value的名称不固定的,可以自己执行。
func main(){
  //定义一个数组
  var numArr04 = [...]int{1: 100, 0: 200, 2: 300}
  //调用test方法
  test(numArr04)
  //索引为0的元素对应的值是200
  //索引为1的元素对应的值是100
  //索引为2的元素对应的值是300

}
func test(array [3]int) {
	for index, value := range array {
		fmt.Printf("索引为%d的元素对应的值是%v \n", index, value)
	}
}

细节注意:

  1. 数组是多个相同的类型数据的组合,一个数组一旦声明或者定义了,其长度是固定的,不能动态变化。
  2. 数组中的元素可以是任何数据类型,包括值类似和引用类型,但是不能混用。
  3. 数组定义好以后,没有赋值,有默认值(零值)。
  4. 数组的下标从0开始,数组下标必须在指定的范围内使用,否则报panic:数组越界。比如:var arr [5]int,则有效下标[0-4]。
  5. 使用数组的步骤:声明数组并开辟空间;给数组各个元素赋值;使用数组。
  6. Go的数组是值传递,在默认情况下是值传递,因此会进行值拷贝。数组间不会影响。如果想在其他函数中去修改原来的数组,可以使用引用传递(指针方式)。

func main(){
    //定义一个数组
    var numArr04 = [...]int{1: 100, 0: 200, 2: 300}
	fmt.Println("numArr04=", numArr04) //numArr04=[200,100,300]
    test(&numArr04)
	fmt.Println("numArr04=", numArr04)//numArr04=[9999,100,300]
}
//定义一个方式 改变数组中的值 注意:长度是数组类型的一部分,在传递函数参数时,需要考虑数组的长度。
func test(array *[3]int) {
	for index, value := range *array {
		fmt.Printf("索引为%d的元素对应的值是%v \n", index, value)
		if index == 0 {
			//修改索引为0的的位置上的元素值
			(*array)[index] = 9999
		}
	}
}

标签:index,int,fmt,细节,numArr04,数组,使用,var
From: https://www.cnblogs.com/mafu-blogs/p/17980292

相关文章

  • lm_sensors安装与使用
    lm_sensors:lm_sensors是一款linux的硬件监控的软件,可以帮助我们来监控主板,CPU的工作电压,风扇转速、温度等数据。这些数据我们通常在主板的BIOS也可以看到。当我们可以在机器运行的时候通过lm_sensors随时来监测着CPU的温度变化,可以预防和保护因为CPU过热而会烧掉。 安装方式:......
  • Linux-crontab的使用
    一、什么是crontab?crontab是有cron(crond)这个系统服务来控制的,cron服务是linux的内置服务,类似于window下的计划任务,但它不会开机自动启动二、如何使用?crontab-l   //查看当前用户的crontabcrontab-e   //编辑crontabcrontab-r   //删除某个用户的cron服......
  • 使用Go进行HTTP客户端认证
    在Go语言中,HTTP客户端认证可以通过net/http包来实现。下面是一个简单的示例,展示如何使用Go进行HTTP客户端认证。首先,确保你已经安装了Go语言环境,并设置好了相关的环境变量。Go语言中的HTTP客户端认证主要涉及到设置请求头中的认证信息。以下是一个简单的示例代码,展示了如何使用Go发......
  • 使用Go编写HTTP中间件
    在Go语言中,HTTP中间件是一种处理HTTP请求和响应的函数,它可以拦截到请求并对其进行处理,然后再将请求传递给下一个中间件或目标处理程序。HTTP中间件在Web应用程序中非常常见,它提供了一种机制来执行各种任务,例如身份验证、授权、日志记录和错误处理等。下面是一个使用Go编写HTTP中间......
  • 使用Go进行HTTP性能优化
    Go语言,也被称为Golang,是一种高效且强大的编程语言,特别适合构建高性能的Web应用程序。在处理HTTP请求时,通过一些优化技巧,可以显著提高应用程序的性能。以下是一些使用Go进行HTTP性能优化的方法:1. 并发处理:Go语言内置的并发原语,如goroutine和channel,使得并发编程变得简单而高效。你......
  • Typora md使用语法
    目录使用技巧常用快捷键插件快捷键常用样式及快捷键部分HTML样式扩展语法各种公式语法举例(支持LaTeX)流程图(非GFM标准)流程图语法元素定义语法连接元素的语法效果示例部分样式展示#一级标题##二级级标题###三级级标题####四级级标题#####五级级标题######六级级标题使用......
  • 使用windows工具获取性能数据(任务管理器+资源监视器)
    Windows工具 任务管理器执行taskmgr来打开任务管理器CPU内存磁盘 网络GPU 进程详细情况 资源监视器执行perfmon来打开资源监视器概述CPU内存磁盘网络 ......
  • 线性表 - 数组与链表
    感谢@pdai的全栈知识体系,数据结构与算法是相通的,做的题目与原博主不同。https://www.pdai.tech/md/algorithm/alg-basic-array.html数组数组是一种连续存储线性结构,元素类型相同,大小相等,数组是多维的,通过使用整型索引值来访问他们的元素,数组尺寸不能改变。数组的优点:存......
  • 【一文秒懂】Ftrace系统调试工具使用终极指南
    【一文秒懂】Ftrace系统调试工具使用终极指南1、Ftrace是什么Ftrace是FunctionTrace的简写,由StevenRostedt开发的,从2008年发布的内核2.6.27中开始就内置了。Ftrace是一个系统内部提供的追踪工具,旨在帮助内核设计和开发人员去追踪系统内部的函数调用流程。随着Ftrace的......
  • [转帖]使用MAT命令行工具生成堆dump分析文件
    https://www.cnblogs.com/hellxz/p/use_mat_linux_command_line_generate_reports.html 写作目标Java程序运行过程中,难免会出现OOM,往往是在JVM启动参数中添加出现OOM时输出堆dump(又名:堆转储、堆快照)的参数,就在昨天下午我司生产环境出现OOM,生成的堆dump有16个G,......