前言
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)
}
}
}