[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" 转载请保留原文链接及作者。