猿码记

V1

2023/02/02阅读:10主题:橙心

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] 
*/

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

分类:

后端

标签:

后端

作者介绍

猿码记
V1