共计 2220 个字符,预计需要花费 6 分钟才能阅读完成。
导读 | 这篇文章主要为大家详细介绍了 Go 语言中数组一些细节的相关资料,文中的示例代码讲解详细,对我们学习 Go 语言有一定的帮助,需要的可以了解一下 |
书接上文,我们提到二维数组中的第二个维度的数组不能用 … 来表示,接下来我们要认识两个新的函数,它们分别是 len 和 cap
package main
func main() {a := [2]int{}
println(len(a), cap(a))
}
由上方代码可知,我们在 main 函数里面定义了一个 a 数组,长度为 2,未进行初始化变量等赋值操作,所以数组元素均为 0;调用打印函数输出的是数组 a 的 length 和 cap 值,这里运行结果均为 2
接下来我们重点讲一下二维数组的遍历,有些小伙伴可能就要问了:我没学过什么遍历循环啊,这让我怎么理解?
别急,咱们看代码主要看的是一个思路过程~
package main
import ("fmt")
func main() {var f [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}}
for k1, v1 := range f {
for k2, v2 := range v1 {fmt.Printf("(%d,%d)=%d", k1, k2, v2)
}
fmt.Println()}
}
首先我们可以看到在 main 函数里面定义了一个 int 类型,名叫 f 的数组,它的属性为 2 行 3 列,第一行存储的是 {1,2,3},第二行存储的是 {7,8,9},我们通过 for 循环对二维数组进行一次遍历,读者暂时可以把它理解成一个循环的固定格式,后续循环会为读者一一介绍,由于本次数组是二维数组,所以我们需要调用两次 for 循环来对数组进行遍历,通过函数打印输出所需要的值
package main
import "fmt"
func printArr(arr *[5]int) {arr[0] = 10
for i, v := range arr {fmt.Println(i, v)
}
}
func main() {var arr1 [5]int
printArr(&arr1)
fmt.Println(arr1)
arr2 := [...]int{2, 4, 6, 8, 10}
printArr(&arr2)
fmt.Println(arr2)
}
首先我们可以看到定义了一个 printArr 方法,并在方法里面内置了一个长度为 5、int 类型的数组。紧接着我们将数组的第一个元素赋值为 10,紧接着对数组进行循环遍历,分别输出数组的索引及索引位置上的值
回到 main 方法中,我们定义了一个名叫 arr1,长度为 5,int 类型的数组,并直接打印该数组的地址值,同时调用函数打印出该数组未进行初始化时候的值,显而易见的是,由于我们在 printArr 中已经对索引位置为 1 的数组的值进行了一次修改,所以本次打印输出数组的时候,也会受到上一次数组的影响,所以本次数组打印输出的结果为 [10 0 0 0 0]。紧接着,我们定义了一个名叫 arr2,长度为任意,int 类型的数组,同时给予赋值操作,但是由于在 printArr 中索引为 1 的数组的位置的值已经发生了改变,所以本次 arr2 数组打印输出的结果为 [10 4 6 8 10]
package main
import (
"fmt"
"math/rand"
"time"
)
func sumArr(a [10]int) int {
var sum int = 0
for i := 0; i
我们首先定义了一个方法名叫 sumArr,同时往该方法里面传入一个名为 a,长度为 10,数据类型为 int 类型的数组。在本方法里面,我们定义一个变量为 sum,使用 for 循环来对数组进行遍历操作,同时使用 sum 来记录该数组各元素的和,最终返回 sum 的值
紧接着我们看到 main 方法,我们在该方法中使用 rand.seed() 函数来定义一个随机数,同时初始化一个名为 b,长度为 10,数据类型为 int 类型的数组使用 for 循环对该数组进行遍历,同时将随机数的值赋给 b 数组中元素。最终我们将数组 sumArr 中 b 的值赋给 sum,调用函数进行打印输出 sum 的值
例题:数组元素匹配问题
找出数组中和为给定值的两个元素的下标,例如数组 [1,3,5,8,7],
找出两个元素之和等于 8 的下标分别是(0,4)和(1,2)
求元素和,是给定的值
package main
import "fmt"
func myTest(a [5]int, target int) {
// 遍历数组
for i := 0; i
根据题意,我们可以得知,在 myTest 方法里面我们定义了一个名为 a,长度为 5,数据类型为 int 类型的数组,同时还定义了一个目标值 target 用于检验元素和是否正确。
紧接着我们对该数组进行遍历,定义 other 变量用于表示另一个数组元素,这里进行二次遍历的原因是因为本条题目需要匹配数组中两个元素的值,因此进行二次遍历匹配数组中 i 的值,一旦与 other 匹配上,即打印输出该数组的值(两个元素)。
我们在 main 函数中对数组 b 进行变量初始化的赋值操作,以便进行方法的调用,如果在数组中能够找到 myTest()方法中的第二个,即 target 元素,就打印输出这两个元素,反之则什么都不打印
今天我们主要学习了 Go 语言在二维数组和遍历数组中的一些应用。如遍历数组的一个固定格式,亦或是数组的拷贝与传参,这些都值得读者去仔细推敲