Golang学习之路—数组

数组基本介绍

数组可以存放多个同一类型数据。数组也是一种数据类型,在Go中,数组是值类型

数组的快速入门

package main

import(
	"fmt"
)

func main(){
    
    
	//统计学生成绩的总分数
	var scores[5] int
	scores[0] = 90
	scores[1] = 80
	scores[2] = 89
	scores[3] = 95
	scores[4] = 98

	total := 0
	for i := 0; i < len(scores); i++{
    
    
		total += scores[i]
	}

	fmt.Printf("学生成绩的总分数 = %v\n",total)
}

运行结果:
在这里插入图片描述
总结:使用数组来解决问题,程序的可维护行增加了,而且代码更加清晰,也容易扩展。

数组定义和内存布局

1、数组的定义
var 数组名 [数组大小] 数据类型
var a[5]int
2、数组在内存布局
在这里插入图片描述
对上图的总结:

  • 数组的地址可以通过数组名来获取&intArr。
  • 数组的第一个元素的地址,就是数组的首地址。
  • 数组的各个元素的地址间隔是依据数组的类型决定。比如int64占8个字节,int 32占4个字节。

数组的初始化

 全局:
    var arr0 [5]int = [5]int{
    
    1, 2, 3}
    var arr1 = [5]int{
    
    1, 2, 3, 4, 5}
    var arr2 = [...]int{
    
    1, 2, 3, 4, 5, 6}
    var str = [5]string{
    
    3: "hello world", 4: "tom"}
局部:
    a := [3]int{
    
    1, 2}           // 未初始化元素值为 0。
    b := [...]int{
    
    1, 2, 3, 4}   // 通过初始化值确定数组长度。
    c := [5]int{
    
    2: 100, 4: 200} // 使用索引号初始化元素。

数组的使用

1、访问数组元素

数组名[下标]

2、案例

package main

import(
	"fmt"
)

func main(){
    
    
	//从终端循环输入5个成绩,保存到scores数组中,并输出
	var scores[5] int
	for i := 0; i < len(scores); i++ {
    
    
		fmt.Printf("请输入第%d个元素\n", i+1)
		fmt.Scanln(&scores[i])
	}
	for i := 0; i < len(scores); i++{
    
    
		fmt.Printf("scores[%d] = %v\n",i,scores[i])
	}

	
}

输出结果:
在这里插入图片描述

数组的遍历

1、常规遍历

见下列代码:

func main(){
    
    
	//从终端循环输入5个成绩,保存到scores数组中,并输出
	var scores[5] int
	for i := 0; i < len(scores); i++ {
    
    
		fmt.Printf("请输入第%d个元素\n", i+1)
		fmt.Scanln(&scores[i])
	}
	for i := 0; i < len(scores); i++{
    
    
		fmt.Printf("scores[%d] = %v\n",i,scores[i])
	}

	
}

2、for-range结构遍历

这是Go语言一种独有的结构,可以用来遍历访问数组元素。
基本语法:

for index,value := range array{
    
    
  ...
}

说明:

  • 第一返回值index是数组的下标
  • 第二个value是在该下标位置的值
  • 他们都是仅在for循环内部可见的局部变量
  • 遍历数组元素的时候,如果不想使用下标index,可以直接把下标index标为下划线_
  • index和value的名称不是固定的,可自行定义。
    案例:
package main

import(
	"fmt"
)
func main(){
    
    
	//从终端循环输入5个成绩,保存到scores数组中,并输出
	var scores[5] int
	for i := 0; i < len(scores); i++ {
    
    
		fmt.Printf("请输入第%d个元素\n", i+1)
		fmt.Scanln(&scores[i])
	}
	//使用for-range遍历
	for index, value := range scores{
    
    
		fmt.Printf("scores[%d] = %v\n",index,value)
	}	
}

运行结果:
在这里插入图片描述

数组使用的注意事项

  1. 数组是多个相同类型数据的组合,一个数组一旦声明了,其长度是固定的,不能动态变化。
  2. 数组中的元素可以是任何数据类型,包括之类型和引用类型,但是不能混用。
  3. 数组创建后,如果没有赋值,则默认值为零值。
  4. 数组的下标是从0开始的。
  5. 数组下标必须在指定范围内使用,否则数组越界。数组的下标范围为0 ~ 数组长度-1。
  6. Go的数组属于值类型,在默认情况下是值传递。
  7. 长度是数组类型的一部分,在传递函数参数时,需要考虑数组的长度。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44736475/article/details/113992061