数组的定义
var 变量名[元素数量(长度)]元素类型
例如:
var a [5]int
var b [4]int
注意:
1.数组是多个相同类型数据的组合,一个组合一旦声明或定义,其长度是固定的,不能动态变化
2.数组中的元素可以是任何数据类型,包括值类型和引用类型,但是不可以混用
3.创建后,如果没有赋值,默认零值
4.使用步骤:1.声明数组并开辟空间 2.赋值 3.使用
数组的初始化
var a [5]int//不给值 默认初始化为int类型的零值
var b =[3]int{1,2}//此时数组为 [1 2 0] 没有给指定值用该元素类型的零值填充
var c = [...]int{1,2}// [1 2] 自行判断数组长度长度用...
var d = [...]int{1:2,4:5}//[0 2 0 0 5] 通过指定索引值来初始化
数组的遍历
常见遍历方式
func main(){
arr := [...]int{2, 4, 6, 8, 10}
// 遍历1 for循环
for i := 0; i < len(arr); i++ {
fmt.Println(arr[i])
}
// 2
// 4
// 6
// 8
// 10
// for-range
// 遍历2(常用)
for i := range arr {
fmt.Println(arr[i])
}
// 2
// 4
// 6
// 8
// 10
// 遍历3 索引 值
for i, v := range arr {
fmt.Println(i, v)
}
// 0 2
// 1 4
// 2 6
// 3 8
// 4 10
for _, v := range arr3 {
fmt.Println(v)
}
// 2
// 4
// 6
// 8
// 10
}
多维数组
指在数组中去嵌套数组
以二维数组为例
func main() {
var arr [4][6]int
arr[1][2] = 1
arr[2][1] = 2
arr[2][3] = 3
for i := 0; i < 4; i++ {
for j := 0; j < 6; j++ {
fmt.Print(arr[i][j], " ")
}
fmt.Println()
}
// 0 0 0 0 0 0
// 0 0 1 0 0 0
// 0 2 0 3 0 0
// 0 0 0 0 0 0
}
注意多维数组只有第一层可以用… 来推导数组长度
数组是值类型
赋值和传参会复制整个数组。因此改变副本的值,不会改变本身的值。
arr := [3]int{12, 23, 45}
arr[0] = 88
fmt.Println(arr)
// 输出 [12 23 45]
数组的修改
在其他函数中需要修改数组,可以用引用传递(指针)实现
arr := [3]int{12, 23, 45}
(*arr)[0] = 88
fmt.Println(arr)
// 输出 [88 23 45]
案例
// 案例1 创建一个byte类型的26个元素的数组,分别放置‘A’-‘Z’.使用for循环访问所有元素并打印出来
func demo1() {
var myCharts [26]byte
for i := 0; i < 26; i++ {
myCharts[i] = 'A' + byte(i) //统一数据类型 将i强制转换成byte
}
for i := 0; i < 26; i++ {
fmt.Printf("%c ", myCharts[i])
}
}
// 案例2 求出一个数组的最大值并得到对应的下标
func demo2() {
var intarr [5]int
intarr = [...]int{2, -2, 6, 8, 1}
maxVal := intarr[0]
maxValindex := 0
for i := 1; i < len(intarr); i++ {
if maxVal < intarr[i] {
maxVal = intarr[i]
maxValindex = i
}
}
fmt.Printf("maxVal=%v maxValindex=%v ", maxVal, maxValindex)
}
// 案例3 求出一个数组的和 以及平均值 for-range
func demo3() {
var arr01 [6]int
arr01 = [...]int{12.0, 5.0, 6.0, 8.0, 9.0, 55.0}
var total = 0
for _, v := range arr01 {
total = total + v
}
fmt.Printf("total=%v 平均值=%v", total, float32(total)/float32(len(arr01)))
}
func main() {
demo1()
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
fmt.Println()
demo2()
// maxVal=8 maxValindex=3
fmt.Println()
demo3()
// total=95 平均值=15.833333
}
这篇博客详细介绍了Golang中的数组,包括数组的定义、初始化、遍历方法、多维数组的实现以及数组作为值类型的特点。文章强调了数组长度的固定性,以及在传递和修改数组时需要注意的值复制行为,并给出了使用指针来修改数组的示例。
986

被折叠的 条评论
为什么被折叠?



