如何用GO语言高效操作复合数据类型数组?

2026-05-22 07:211阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计794个文字,预计阅读时间需要4分钟。

如何用GO语言高效操作复合数据类型数组?

复合数据类型 + 数组 + 数组定义:var 数组变量名 [元素数量T] + 数组的初始化 + 数组的遍历 + 多维数组 + 数组是值类型 + 数组是值类型,赋值和传参会复制整个数组。

复合数据类型

数组

数组定义:

如何用GO语言高效操作复合数据类型数组?

var 数组变量名 [元素数量]T

数组的初始化

数组的遍历

多维数组

数组是值类型

数组是值类型,赋值和传参会复制整个数组。因此改变副本的值,不会改变本身的值。

  1. 数组支持 “==“、”!=” 操作符,因为内存总是被初始化过的。
  2. [n]T表示指针数组,[n]T表示数组指针 。
点击查看代码

package main import "fmt" // 数组 // 存放元素的容器 // 必须指定存放的元素的类型和容量(长度) // 数组的长度是数组类型的一部分 func main(){ var a1 [3]bool // [true false true] var a2 [4]bool // [true true false false] fmt.Printf("a1:%T a2:%T\n", a1, a2) // 数组的初始化 // 如果不初始化:默认元素都是零值(布尔值:false,整型和浮点型都是0,字符串:"") fmt.Println(a1, a2) // 1. 初始化方式1 a1 = [3]bool{true, true, true} fmt.Println(a1) // 2. 初始化方式2 根据初始值自动推断数组的长度是多少 // a10 := [10]int{0,1,2,3,4,5,6,7,8,9} a10 := [...]int{0,1,2,3,4,5,6,7,8,9} fmt.Println(a10) // 3. 初始化方式3 根据索引来初始化 // a3 := [5]int{1,2} a3 := [5]int{0:1,4:2} fmt.Println(a3) // 数组的遍历 citys := [...]string{"北京", "上海", "深圳"} // 索引:0-2 citys[0],citys[1],citys[2] // 1. 根据索引遍历 for i := 0; i < len(citys);i++{ fmt.Println(citys[i]) } // 2. for range遍历 for i, v := range citys { fmt.Println(i, v) } // 多维数组 // [[1,2][3,4][5,6]] var a11 [3][2]int a11 = [3][2]int{ [2]int{1, 2}, [2]int{3, 4}, [2]int{5, 6}, } fmt.Println(a11) // 多维数组的遍历 for _, v1 := range a11 { fmt.Println(v1) for _, v2 := range v1 { fmt.Println(v2) } } // 数组是值类型 b1 := [3]int{1,2,3} // [1 2 3] b2 := b1 // [1 2 3] Ctrl+C Ctrl+V => 把world文档从文件夹a拷贝到文件夹b b2[0] = 100 // b2:[100 2 3] fmt.Println(b1, b2) // b1:? }

  • 练习
点击查看代码

package main import "fmt" // 求数组[1, 3, 5, 7, 8]所有元素的和 // 找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。 func main(){ // 1. 求数组[1, 3, 5, 7, 8]所有元素的和 a1 := [...]int{1,3,5,7,8} // 把数组中的每一个元素遍历出来,累加到一个sum变量就可以了 sum := 0 for _, v := range a1{ sum = sum + v } fmt.Println(sum) // 找出和为8的两个元素的下标分别为(0,3)和(1,2) // 定义两个for循环,外层的从第一个开始遍历 // 内层的for循环从外层后面的那个开始找 // 它们两个数的和为8 for i:=0;i<len(a1);i++{ for j:=i + 1;j<len(a1);j++{ if a1[i] +a1[j] == 8{ fmt.Printf("(%d, %d)\n", i, j) } } } }

本文共计794个文字,预计阅读时间需要4分钟。

如何用GO语言高效操作复合数据类型数组?

复合数据类型 + 数组 + 数组定义:var 数组变量名 [元素数量T] + 数组的初始化 + 数组的遍历 + 多维数组 + 数组是值类型 + 数组是值类型,赋值和传参会复制整个数组。

复合数据类型

数组

数组定义:

如何用GO语言高效操作复合数据类型数组?

var 数组变量名 [元素数量]T

数组的初始化

数组的遍历

多维数组

数组是值类型

数组是值类型,赋值和传参会复制整个数组。因此改变副本的值,不会改变本身的值。

  1. 数组支持 “==“、”!=” 操作符,因为内存总是被初始化过的。
  2. [n]T表示指针数组,[n]T表示数组指针 。
点击查看代码

package main import "fmt" // 数组 // 存放元素的容器 // 必须指定存放的元素的类型和容量(长度) // 数组的长度是数组类型的一部分 func main(){ var a1 [3]bool // [true false true] var a2 [4]bool // [true true false false] fmt.Printf("a1:%T a2:%T\n", a1, a2) // 数组的初始化 // 如果不初始化:默认元素都是零值(布尔值:false,整型和浮点型都是0,字符串:"") fmt.Println(a1, a2) // 1. 初始化方式1 a1 = [3]bool{true, true, true} fmt.Println(a1) // 2. 初始化方式2 根据初始值自动推断数组的长度是多少 // a10 := [10]int{0,1,2,3,4,5,6,7,8,9} a10 := [...]int{0,1,2,3,4,5,6,7,8,9} fmt.Println(a10) // 3. 初始化方式3 根据索引来初始化 // a3 := [5]int{1,2} a3 := [5]int{0:1,4:2} fmt.Println(a3) // 数组的遍历 citys := [...]string{"北京", "上海", "深圳"} // 索引:0-2 citys[0],citys[1],citys[2] // 1. 根据索引遍历 for i := 0; i < len(citys);i++{ fmt.Println(citys[i]) } // 2. for range遍历 for i, v := range citys { fmt.Println(i, v) } // 多维数组 // [[1,2][3,4][5,6]] var a11 [3][2]int a11 = [3][2]int{ [2]int{1, 2}, [2]int{3, 4}, [2]int{5, 6}, } fmt.Println(a11) // 多维数组的遍历 for _, v1 := range a11 { fmt.Println(v1) for _, v2 := range v1 { fmt.Println(v2) } } // 数组是值类型 b1 := [3]int{1,2,3} // [1 2 3] b2 := b1 // [1 2 3] Ctrl+C Ctrl+V => 把world文档从文件夹a拷贝到文件夹b b2[0] = 100 // b2:[100 2 3] fmt.Println(b1, b2) // b1:? }

  • 练习
点击查看代码

package main import "fmt" // 求数组[1, 3, 5, 7, 8]所有元素的和 // 找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。 func main(){ // 1. 求数组[1, 3, 5, 7, 8]所有元素的和 a1 := [...]int{1,3,5,7,8} // 把数组中的每一个元素遍历出来,累加到一个sum变量就可以了 sum := 0 for _, v := range a1{ sum = sum + v } fmt.Println(sum) // 找出和为8的两个元素的下标分别为(0,3)和(1,2) // 定义两个for循环,外层的从第一个开始遍历 // 内层的for循环从外层后面的那个开始找 // 它们两个数的和为8 for i:=0;i<len(a1);i++{ for j:=i + 1;j<len(a1);j++{ if a1[i] +a1[j] == 8{ fmt.Printf("(%d, %d)\n", i, j) } } } }