go语言数组

 一维数组

package main

import "fmt"

//建立一个数组,可以储存五个学生的成绩并进行求和算平均值

func main() {
	var scores [5]int //定义数组
	scores[0] = 95
	scores[1] = 91
	scores[2] = 39
	scores[3] = 60
	scores[4] = 20

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

	fmt.Println(sum, avg)

}

数组每个空间占用的字节数取决于数组的数据类型

数组是值类型,在栈中开辟内存

数组优点:访问/查询/读取速度块

package main
import "fmt"

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

 数组遍历

1、普通for循环

2、for range结构

for key,val:=range coll{


}

coll为所要遍历的数组

每次遍历得到的索引用key接收,每次遍历得到的索引位置上的值用val

key,value的名字可以随便起

key,value为在这个循环中的局部变量

如果想忽略key,value中的某一个值用_代替即可

package main

import "fmt"

func main() {
	//实现的功能:给出五个学生的成绩,求出成绩的总和,平均数:
	//给出五个学生的成绩:--->数组存储:
	//定义一个数组
	var scores [5]int
	//将成绩录入数组
	for i := 0; i < len(scores); i++ { //i:数组的下标
		fmt.Printf("请录入第个%d学生的成绩", i+1)
		fmt.Scanln(&scores[i])
	}
	//利用for range循环打印学生成绩
	for key, value := range scores {
		fmt.Printf("第%d个学生的成绩为:%d\n", key+1, value)
	}
}

注意事项

1、长度属于类型的一部分

        var arr1=[3]int{3,6,9}

        数组的类型为[3]int

2、go的数组是值类型,在默认情况下是值传递,因此会进行值拷贝

package main

import "fmt"

func main() {
	var arr3 = [3]int{3, 6, 9}
	test1(arr3)
	fmt.Println(arr3)
}

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

3、如果在其他函数中,去修改原来的数组,可以使用引用传递(指针)

package main

import "fmt"

func main() {
	var arr3 = [3]int{3, 6, 9}
	test1(&arr3)
	fmt.Println(arr3)
}

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

二维数组

package main

import "fmt"

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

	//输出arr的地址
	fmt.Printf("arr的地址为:%p\n", &arr)
	//输出arr[0]的地址
	fmt.Printf("arr[0]的地址为:%p\n", &arr[0])
	//输出arr[0][0]的地址
	fmt.Printf("arr[0][0]的地址为:%p\n", &arr[0][0])
	//输出arr[1]的地址
	fmt.Printf("arr[1]的地址为:%p\n", &arr[1])
	//输出arr[1][0]的地址
	fmt.Printf("arr[1][0]的地址为:%p\n", &arr[1][0])

	arr[0][1] = 47
	//定义二维数组中的某几个,其余的值为0
	arr[0][0] = 31
	arr[1][2] = 39
	fmt.Println(arr)

	var arr2 = [2][3]int{{1, 2, 3}, {4, 5, 6}}
	//二维数组内外两层都是大括号
	fmt.Println(arr2)
}

二维数组遍历

package main

import "fmt"

func main() {
	//定义一个二维数组
	var arr1 = [3][3]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
	fmt.Println(arr1)

	//利用for range
	for key, value := range arr1 {
		for k, v := range value {
			fmt.Printf("arr[%v][%v]=%v\t", key, k, v)
		}
		fmt.Println()
	}
	//for range函数中的key 和 value 分别代表切片的下标及下标对应的值
	//key表示是数组的第几行
	//k表示是某行中的第几列
	//\t是制表符,v是某行某列对应的值
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值