数组
定义:数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。
说明:看定义知道 数组的长度是固定的(跟 js和PHP不一样哟),其次类型是固定,定义了是什么类型就都是什么类型
数组的申明:
//申明一个数组:
var fruits [10] string
/**
fruits 表示数组的名字叫fruits
[10] 表示数组的长度为10
string 表示数组里面存的类型就是string类型
*/
初始化一个数组:
fruits := [5]string{"香蕉","草莓","车厘子","耙耙柑","葡萄"}
/**
fruits 表示数组的名字叫fruits
[5] 表示数组的长度为5
string 表示数组里面存的类型就是string类型
"香蕉","草莓","车厘子","耙耙柑","葡萄":表示初始化的值
*/
如果在定义数组之前不知这个数组有多长 我们可以用...表示:
fruits := [...]string{"香蕉","草莓","车厘子","耙耙柑","葡萄"}
获取数组中的元素:
现在数组中有"香蕉","草莓","车厘子","耙耙柑","葡萄",我们如何拿到这些值呢
数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。
如上图,在下标0的位置是香蕉 在下标3的位置是耙耙柑
我们需要拿到耙耙柑:
fruits := [...]string{"香蕉","草莓","车厘子","耙耙柑","葡萄"}
fmt.Println(fruits[3]) //结果为耙耙柑
我们需要向数组中添加元素:
var fruits [5] string
fruits[0] = "香蕉"
fruits[1] = "草莓"
fruits[2] = "车厘子"
fruits[3] = "耙耙柑"
fruits[4] = "葡萄"
还可以这样添加:
fruits := []string{}
fruits = append(fruits, "枇杷")
fmt.Println(fruits[0])//枇杷
遍历数组一(for):
fruits := [...]string{"香蕉", "草莓", "车厘子", "耙耙柑", "葡萄"}
for i := 0; i < len(fruits); i++ {
fmt.Println(fruits[i])
}
遍历数组二(range):
fruits := [...]string{"香蕉", "草莓", "车厘子", "耙耙柑", "葡萄"}
for _,v := range fruits{
fmt.Println(v)
}
二维数组
多维数组就是数组中的元素也是数组(数组里面存数组)
定义方式:
var arrayName [ x ][ y ] variable_type
variable_type 为 Go 语言的数据类型,arrayName 为数组名,二维数组可认为是一个表格,x 为行,y 为列,下图演示了一个二维数组 a 为三行四列:
二维数组中的元素可通过 a[ i ][ j ] 来访问:
emperorAll := [][]string{}
emperor1 := []string{"姬昌","姬发","嬴政"}
emperor2 := []string{"刘邦","司马懿","拓跋宏"}
emperorAll = append(emperorAll,emperor1)
emperorAll = append(emperorAll,emperor2)
fmt.Println(emperorAll[0][2])//嬴政
初始化二维数组:
a := [2][4]int{{11, 45, 67, 89}, {-100, -12, 99, 58}}
fmt.Println(a[1][3])//58
遍历二位数组一(for):
a := [2][4]int{{11, 45, 67, 89}, {-100, -12, 99, 58}}
for i := 0; i < len(emperorAll); i++ {
for j := 0; j < len(emperorAll[i]); j++ {
fmt.Println(emperorAll[i][j])
}
}
遍历二位数组一(range):
a := [2][4]int{{11, 45, 67, 89}, {-100, -12, 99, 58}}
for _,v := range a{
for _,val := range v{
fmt.Println(val)
}
}