[GO]数组的使用-3
数组是一个长度确定的数据类型,可以理解为一排排格子放置着物品,可以是不同类型的物品。本节讲解数组的基本使用(因为数组长度不可变的关系,Golang中提供了“动态数组”–切片。使用更广,将在以后说明)
数组的定义与初始化
一但声明,该数组的类型与长度不能改变了,当没手动赋初值的时候,会自动将每个元素的值初始化为0。结果在注释中!package mainimport (
“fmt”
)func main() {
var arr [5]int
fmt.Println(arr)//{0 0 0 0 0}
}
下面是几种不同的定义形式
package main import ( "fmt" ) func main() { var arr = [5]int{1, 2, 3, 4, 5} var arr2 [5]int = [5]int{1, 2, 3, 4, 5} arr3 := [5]int{1, 2, 3, 4, 5} arr4 := [...]int{1, 2, 3, 4, 5} fmt.Println("arr: ", arr) fmt.Println("arr2: ", arr2) fmt.Println("arr3: ", arr3) fmt.Println("arr4: ", arr4) /* arr: [1 2 3 4 5] arr2: [1 2 3 4 5] arr3: [1 2 3 4 5] arr4: [1 2 3 4 5] */ }
声明数组时同时指定特定的元素
数组下标都是从0开始的。package mainimport (
“fmt”
)func main() {
arr := [5]int{1: 22, 4: 99}
fmt.Println(arr)//[0 22 0 0 99]
}
数组的赋值
按照对应的下标,即可修改数组元素的值。package mainimport (
“fmt”
)func main() {
arr := [5]int{1, 2, 3, 4, 5}
arr[0] = 66
arr[3] = 99
fmt.Println(arr)//[66 2 3 99 5]
}
同时可以将同类型同长度的数组赋值给另一个数组
我们这里能看出来,对arr的修改并不影响arr2,golang中传递方式为值传递,相当于copy了一份。
package main import ( "fmt" ) func main() { arr := [5]string{"hehe", "haha", "xixi", "huhu", "pupu"} var arr2 [5]string arr2 = arr arr[0] = "pipi" fmt.Println(arr) fmt.Println(arr2) /* [pipi haha xixi huhu pupu] [hehe haha xixi huhu pupu] */ }
数组的遍历
我们平时通过下标遍历的方式。package mainimport (
“fmt”
)func main() {
arr := [5]string{“hehe”, “haha”, “xixi”, “huhu”, “pupu”}for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) }
/*
hehe
haha
xixi
huhu
pupu
*/
}
这里还可以使用range关键字来遍历,这种方式可以将下标与对应的值全取出来,下面是取值的几种用法。
package main import ( "fmt" ) func main() { arr := [...]string{"hehe", "haha", "xixi"} //取下标 for a := range arr { fmt.Print(a) } fmt.Println() //取下标和值 fmt.Println() for a := range arr { fmt.Println(a, arr[a]) } //取下标和值 fmt.Println() for a, v := range arr { fmt.Println(a, v) } //取值 fmt.Println() for _, v := range arr { fmt.Println(v) } /* 012 0 hehe 1 haha 2 xixi 0 hehe 1 haha 2 xixi hehe haha xixi */ }
多维数组
多维的定义与初始化。他们之间许多能理解为父子的对应关系。package mainimport (
“fmt”
)func main() {
var arr [3][2]int
fmt.Println(arr)arr2 := [2][2]int{{3, 4}, {6, 9}} fmt.Println(arr2) arr3 := [3][2]int{1: {3, 6}, 2: {9, 11}} fmt.Println(arr3) arr4 := [3][2]int{1: {0: 33}, 2: {1: 55}} fmt.Println(arr4)
/*
[[0 0] [0 0] [0 0]]
[[3 4] [6 9]]
[[0 0] [3 6] [9 11]]
[[0 0] [33 0] [0 55]]
*/
}
二维数组的赋值
package mainimport (
“fmt”
)func main() {
var arr [2][3]intarr[0][0] = 1 arr[0][1] = 3 arr[1][1] = 9 fmt.Println(arr)
/*
[[1 3 0] [0 9 0]]
*/
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xiaoxin1218@qq.com
文章标题:[GO]数组的使用-3
文章字数:766
本文作者:周信
发布时间:2019-10-08, 22:41:46
最后更新:2023-05-03, 10:25:35
原始链接:http://zx21.xyz/2019/10/08/GO-数组的使用-3/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。