1、Array(数组)
1. 数组:是同一种数据类型的固定长度的序列。
2. 数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。一旦定义,长度不能变。
3. 长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型。
4. 数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1
for i := 0; i < len(a); i++ {
}
for index, v := range a {
}
5. 访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic
6. 数组是值类型,赋值和传参会复制整个数组,而不是指针。因此改变副本的值,不会改变本身的值。
7.支持 "=="、"!=" 操作符,因为内存总是被初始化过的。
8.指针数组 [n]*T,数组指针 *[n]T。
var arr0 [2]int
var arr2 [3]int
fmt.Printf("arr0:%T内容为%v, arr2:%T,内容为%v\n" , arr0,arr0,arr2, arr2)
var arr = [...]string{"卫宫士郎","远坂樱","继国缘一"}
fmt.Printf("aaa的类型为%T,内容为%v",arr,arr)
2、数组定义
3、数组的初始化
后面直接带赋值的需要在定义的数组后加等于号
方法一
var shuzu [3]int
shuzu[0] = 1
shuzu[1] = 2
shuzu[2] = 3
fmt.Println(shuzu)
var arr3 [3]string
arr3[0] = "卫宫士郎"
arr3[1] = "漩涡鸣人"
arr3[3] = "比目鱼" //out of bounds for 3-element array
fmt.Println(arr3)
方法二
var arr4 = [3]int{1,2,3}
fmt.Println(arr4)
方法三
var arr5 = [...]int{1,2,3,4,5,6}
fmt.Print(arr5,"数组的长度为",len(arr5))
// 注意数组的长度,改变数组里面的值
var arr6 = [...]string{"卫宫士郎","宋东野","斑马"}
arr6[0] = "奥特曼"
fmt.Print(arr6)
// var arr6 = [...]string{"卫宫士郎","宋东野","斑马"}
// arr6[3] = "奥特曼" //index 3 out of bounds [0:3]
// fmt.Print(arr6)
// 这样的不行,需要注意数组的长度,类型;
方法四
数组的初始化 第四种方法 我们还可以使用指定索引值的方式来初始化数组
arr7 := [...]int{0:1,2:2,4:10}
fmt.Printf("数组的内容为%v,类型为%T,个数为%v",arr7,arr7,len(arr7))
4、数组的遍历
arr7 := [...]string{"sabar","archer","rider"}
for i := 0; i < len(arr7); i++ {
fmt.Printf("值为%v\n",arr7[i])
}
arr1 := [...]string{"php", "nodejs", "golnag", "js"}
for k, v := range arr1 {
fmt.Printf("key:%v value:%v\n", k, v)
}
文章来源:https://www.toymoban.com/news/detail-595502.html
5、几则练习
1、求出一个数组里面元素的和以及这些元素的平均值。
var sum = 0
arr1 := [...]int{1,2,3,4,5,6,7}
for i := 0; i < len(arr1); i++ {
sum += arr1[i]
}
fmt.Printf("数组的和为%v.其平均值为%v",sum,sum/len(arr1))
文章来源地址https://www.toymoban.com/news/detail-595502.html
2、请求出一个数组的最大值,并得到对应的下标
1、 声明一个数组 var Arr = [...]int {1, -1, 12, 65, 11}
2、假定第一个元素就是最大值,下标就 0
3、然后从第二个元素开始循环比较,如果发现有更大,则交换
arr2 := [...]int{21,222,312,42,33}
max := arr2[0]
index := 0
for i := 0; i < len(arr2); i++
到了这里,关于Golang 中的数组Array以及Slice底层实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!