Go学习(八): 数组使用

1.数组的概念

数组是相同类型的一组数据构成的长度固定的序列,其中数据类型包含了基本数据类型、复合数据类型和自定义类型。因为数组的内存是一段连续的存储区域,所以数组的检索速度是非常快的,但是数组也有一定的缺陷,就是定义后长度不能更改。

2.声明数组

2.1 先声明后使用
package main
import "fmt"
func main() {
	// 声明一个长度为3的整型数组
	var arr [3]int
    arr[0] = 1
    arr[1] = 3
    arr[2] = 5
    fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
}
// 输出: 数组arr 类型: [3]int  值: [1 3 5]
2.2 直接初始化使用
package main
import "fmt"
func main() {
	// 直接声明使用
	arr := [3]int{1,3,5}
	fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
}
// 输出: 数组arr 类型: [3]int  值: [1 3 5]
2.3 声明数组(不指定长度)
package main
import "fmt"
func main() {
	// 用...代表数组长度, 编译器会自动计算长度
	arr := [...]int{1,3,5,7,9,11}
	fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
}

3.二维数组

3.1 先声明后使用
package main
import "fmt"
func main() {
	// 声明一个二维数组
	var arr [3][4]int
	// 赋值使用
	arr[0] = [4]int{1,2,3,4}
	arr[1] = [4]int{5,6,7,8}
	arr[2] = [4]int{9,10,11,12}
	fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
}
// 输出: 数组arr 类型: [3][4]int  值: [[1 2 3 4] [5 6 7 8] [9 10 11 12]]
3.2 直接初始化使用
package main
import "fmt"
func main() {
	// 直接声明使用
	arr := [3][4]int{
		{1,2,3,4},
		{5,6,7,8},
		{9,10,11,12},
	}
	fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
}
// 输出: 数组arr 类型: [3][4]int  值: [[1 2 3 4] [5 6 7 8] [9 10 11 12]]
3.3 遍历数组
package main
import "fmt"
func main() {
	// 直接声明多维数组
	arr := [3][4]int{
		{1,2,3,4},
		{5,6,7,8},
		{9,10,11,12},
	}
	// 遍历多维数组
	for key,val := range arr {
		for kk,vv := range val {
			fmt.Printf("第%d维数组,第%d个元素v: %d \n",key,kk,vv)
		}
	}
}
/**输出:
第0组,第0个元素v: 1 
第0组,第1个元素v: 2 
第0组,第2个元素v: 3 
第0组,第3个元素v: 4 
第1组,第0个元素v: 5 
第1组,第1个元素v: 6 
第1组,第2个元素v: 7 
第1组,第3个元素v: 8 
第2组,第0个元素v: 9 
第2组,第1个元素v: 10 
第2组,第2个元素v: 11 
第2组,第3个元素v: 12 
*/

4.多维数组

4.1 三维数组声明
package main

import "fmt"

func main() {
	// 先声明三维数组
	var arr [2][3][4]int

	// 后赋值
	arr[0][0] = [4]int{1,2,3,4}
	arr[0][1] = [4]int{10,20,30,40}
	arr[0][2] = [4]int{100,200,300,400}

	arr[1][0] = [4]int{11,22,33,44}
	arr[1][1] = [4]int{111,222,333,333}
	arr[1][2] = [4]int{1111,2222,3333,4444}
	fmt.Printf("arr类型: %T 值: %v \n",arr,arr)

	// 直接声明三维数组
	arr2 := [2][3][4]int {
		{
			{1,2,3,4},
			{10,20,30,40},
			{100,200,300,400},
		},
		{
			{11,22,33,44},
			{111,222,333,333},
			{1111,2222,3333,4444},
		},
	}
	fmt.Printf("arr2类型: %T 值: %v",arr2,arr2)
}
/**输出
arr类型: [2][3][4]int 值: [[[1 2 3 4] [10 20 30 40] [100 200 300 400]] [[11 22 33 44] [111 222 333 333] [1111 2222 3333 4444]]] 
arr2类型: [2][3][4]int 值: [[[1 2 3 4] [10 20 30 40] [100 200 300 400]] [[11 22 33 44] [111 222 333 333] [1111 2222 3333 4444]]]
*/
4.2 遍历三维数组
package main
import "fmt"
func main() {
	// 先声明三维数组
	var arr [2][3][4]int

	// 后赋值
	arr[0][0] = [4]int{1,2,3,4}
	arr[0][1] = [4]int{10,20,30,40}
	arr[0][2] = [4]int{100,200,300,400}

	arr[1][0] = [4]int{11,22,33,44}
	arr[1][1] = [4]int{111,222,333,333}
	arr[1][2] = [4]int{1111,2222,3333,4444}
	fmt.Printf("arr类型: %T 值: %v \n",arr,arr)

	// 遍历输出
	for _,val := range arr {
		for _,vv := range val {
			fmt.Printf("vv类型: %T 值: %v \n",vv,vv)
		}
	}
}
/*输出:
arr类型: [2][3][4]int 值: [[[1 2 3 4] [10 20 30 40] [100 200 300 400]] [[11 22 33 44] [111 222 333 333] [1111 2222 3333 4444]]] 
vv类型: [4]int 值: [1 2 3 4] 
vv类型: [4]int 值: [10 20 30 40] 
vv类型: [4]int 值: [100 200 300 400] 
vv类型: [4]int 值: [11 22 33 44] 
vv类型: [4]int 值: [111 222 333 333] 
vv类型: [4]int 值: [1111 2222 3333 4444] 
*/

微信搜索关注【猿码记】查看更多文章。

本文由mdnice多平台发布

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值