go语言--数组的引入

前言

package main

import (
	"fmt"
)

func main(){
	scorel := 95
	score2 := 01
	score3 := 21

	//求和
	sum := scorel + score2 + score3
	//平均数
	avg := sum / 3
	//输出
	fmt.Printf("成绩总和:%v,成绩平均数:%v",sum,avg)
}


如果添加50人则这个声明会非常多

定义一个数组

模板

var 数组名 [数量]类型

整体

package main

import (
	"fmt"
)

func main(){
	var score [5]int

	score[0] = 95
	score[1] = 91
	score[2] = 39
	score[3] = 60
	score[4] = 21
	
	//求和
	sum := 0
	for i := 0; i< len(score); i++ {
		sum += score[i]
	}
	//平均数
	avg := sum / 3
	//输出
	fmt.Printf("成绩总和:%v,成绩平均数:%v",sum,avg)
}


数组内存分析

package main
import "fmt"

func main(){
	var arr [3]int16
	//获取数组的长度
	fmt.Println(len(arr))
	//打印数组
	fmt.Println(arr)
	//证明arr中存储的是地址值
	fmt.Printf("arr的地址为:%p",&arr)
	//第一个空间地址
	fmt.Printf("arr的地址为:%p",&arr[0])
	//第二个空间地址
	fmt.Printf("arr的地址为:%p",&arr[1])
	//第三个空间地址
	fmt.Printf("arr的地址为:%p",&arr[2])
}

在这里插入图片描述

数组遍历

输入成绩

package main

import (
	"fmt"
)

func main(){
	var score [5]int
	//输入成绩
	for i := 0; i<len(score); i++{
		fmt.Printf("请录入第%d个学生成绩:",i+1)
		fmt.Scanln(&score[i])
	}
	
	//求和
	sum := 0
	for i := 0; i< len(score); i++ {
		sum += score[i]
	}
	//平均数
	avg := sum / 3
	//输出
	fmt.Printf("成绩总和:%v,成绩平均数:%v",sum,avg)
}

数组的初始化方式

package main

import (
	"fmt"
)

func main(){
	//第一种: var 变量名 [数量]数据类型 = [数量]数据类型{值1,值2...}
	var arr1 [3]int = [3]int{3,6,9}
	fmt.Println(arr1)
	//第二种: var 变量名 = [数量]数据类型{值1,值2...}
	var arr2 = [3]int{1,4,7}
	fmt.Println(arr2)
	//第三种: var 变量名 = [...]数据类型{值1,值2...}
	var arr3 = [...]int{4,5,6,7}
	fmt.Println(arr3)
	//第四种:var 变量名 = [...]数据类型{下标:值1,下标:值2...}
	var arr4 = [...]int{2:66,0:33,1:99,3:88}
	fmt.Println(arr4)
}

注意事项

package main

import (
	"fmt"
)

func main(){
	var arr1 = [3]int{1,6,9}
	test(arr1)
	fmt.Println(arr1)
}

func test(arr [3]int){
	arr[0] = 7
}

你可能会想说这个是[7,6,9]其实它是[1,6,9]

我们要将数组中的数组内存地址的第一个值进行修改(去修改原来的数组,可以使用引用传递(指针方式))

package main

import (
	"fmt"
)

func main(){
	var arr1 = [3]int{1,6,9}
	test(&arr1) //传入数组地址
	fmt.Println(arr1)
}

func test(arr *[3]int){
	(*arr)[0] = 7
}

二维数组

无论二维数组还是多维数组本质上都是一维数组

package main
import "fmt"

func main(){
	//定义一个二维数组
	var arr [2][3]int16
	fmt.Println(arr)

	fmt.Printf("arr的地址是:%p",&arr)
	fmt.Printf("arr[0]的地址是:%p",&arr[0])
	fmt.Printf("arr[0][0]的地址是:%p",&arr[0][0])

	fmt.Printf("arr[1]的地址是:%p",&arr[1])
	fmt.Printf("arr[0][0]的地址是:%p",&arr[0][0])
}

二维数组遍历

方式一
package main

import (
	"fmt"
)

func main(){
	var arr [3][3]int16 = [3][3]int16{{1,4,7},{2,5,8},{3,6,9}}
	fmt.Println(arr)
	fmt.Println("================")
	
	for i := 0; i < len(arr); i++ {
		for j := 0; j < len(arr[i]); j++ {
			fmt.Printf("arr[%d][%d] = %d\n",i,j,arr[i][j])
		}
	}

}
方式二

for range循环

package main

import (
	"fmt"
)

func main(){
	var arr [3][3]int16 = [3][3]int16{{1,4,7},{2,5,8},{3,6,9}}
	fmt.Println(arr)
	fmt.Println("================")
	
	for key,value := range arr {
		for k,v := range value {
			fmt.Printf("arr[%v][%v] = %v\n",key,k,v)
		}
	}

}

数组结果图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

结城明日奈是我老婆

支持一下一直热爱程序的菜鸟吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值