初始化数组的方式
var arr1 [3]int = [3]int{11,22,33}
var arr2 = [...]float64{11.1, 22.2, 33.3} //这里的...是规定的写法,不限制数组元素个数,但数组定义后不能再增加元素
var arr3 = [...]int8{1:3, 2:6, 0:9, 5:2, 8:5, 3:8} //带key
arr4 := [...]int32{111,222,333,555,888} //类型推导
//var arr4 = [...]string{"aa", "bb", "cc"} //字符串必须使用双引号
fmt.Println(arr1, arr2, arr3, arr4, arr5)
数组入门,定义数组
var arr [3]int
arr[0] = 11
arr[1] = 22
arr[2] = 33
fmt.Println(arr, len(arr)) //打印数组和数组长度
举例:定义一个包含三个元素的数组,求和求平均值
var arr [3]float64 //求平均时可能会产生小数,建议数组元素为float64
arr[0] = 11.1
arr[1] = 22.2
arr[2] = 30.0
var sum float64
for i := 0; i < len(arr); i++ {
sum += arr[i]
}
n := fmt.Sprintf("%.2f", sum / float64(len(arr))) //%.2f表示保留两位小数
fmt.Printf("arr内元素的和是:%v \n", sum)
fmt.Printf("arr内元素的平均数是:%v \n", n)
举例:从终端输入2个数,保存到数组并输出
var number [2]float64 //定义数组
var totalNum float64
for i := 0; i < len(number); i++ {
fmt.Printf("请输入第%d个数 \n", i)
fmt.Scan(&number[i]) //获取终端输入并通过地址赋值
}
fmt.Printf("输入的数据为:%v \n", number)
for i := 0; i < len(number); i++ {
totalNum += number[i]
}
fmt.Printf("总和是:%v \n", totalNum)
使用for-range遍历数组
//第一个返回值index是数组下标,第二个value是在该下标位置的值,仅在for-range内有效
for index, value := range array5 {
fmt.Println(index, value)
}
//遍历时,对于不想使用的变量,可以使用下划线”_“忽略
for _, value := range array5 {
fmt.Println(value)
}
for index, _ := range array5 {
fmt.Printf("%v => %v \n", index, array5[index])
}
数组注意事项
1、使用数组的步骤:
2、数组创建后,如果没有赋值,则使用默认值(零值)
3、数组中的元素可以是任意数据类型,包括值类型和引用类型,但是不能混用(即:每个数组中元素的数据类型必须相同)
4、一个数组一旦声明长度后,不能动态变化,数组下标从0开始,使用数组时,下标必须在指定范围内,否则报错“panic:数组越界”(比如:数组 var arr [5]int 默认的有效下标为0-4)
5、Go的数组属于值类型,在默认情况下是值传递,因此会进行值拷贝,数组间不会相互影响
6、如想在其它函数中,去修改原来的数组,可以使用引用方式(指针)
7、长度是数组类型的一部分,在传递函数参数时,需要考虑数组的长度
8、var arr []int,这样定义时,arr是切片并非数组
下一篇:最后一页