golang中的数组
数组含义:同一种数据类型元素的集合,数组的成员可以修改,但是不能追加跟删除,大小不可以变化
数组的定义:
var 数组名 [元素数量]T
数组的访问:通过下标进行访问,下标从0开始,最后一个元素是len(数组名)-1
注意:访问不能越界,越界会panic
数组的遍历:
package main
import "fmt"
func main() {
//第一种方法
n := [...]int{1,2,3,4,5,6} //定义一个数组, ...表示未知数组的长度
for i := 0; i < len(n); i++ {
fmt.Println(n[i])
}
//第二种方法
for _, v := range n {
fmt.Println(v)
}
}
多维数组:以二维数组为例
package main
import "fmt"
func main() {
n := [5][2]int{{1,2},{3,4}} // 定义一个二维数组
fmt.Println(n)
for _,v := range n {
for _,v1 := range v {
fmt.Println(v1)
}
}
}
注意:多维数组只有第一层才可以使用...
让编译器推断数组长度
数组是值类型,无论是赋值还是传参都是复制整个数组,不会修改数组原值,只修改复制后的副本的值
练习
1.求数组[1, 3, 5, 7, 8]所有元素的和
package main
import "fmt"
func main() {
n := [...]int{1,3,5,7,8}
var sum int
for _, v :=range n {
sum += v
}
fmt.Println(sum)
}
2.找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。
package main
import "fmt"
func main() {
n := [...]int{1,3,5,7,8}
var sum int
for i := 0; i < len(n); i++ {
for j := i + 1; j <len(n); j++ {
sum = n[i] + n[j]
if sum == 8 {
fmt.Println(i,j)
}
}
}
}