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++{
}
5.访问越界,如果下标在数组合法范围之外,就会触发越界,panic异常
package main import "fmt" func main() { var a [10]int a[0] = 100 fmt.Println(a) for i := 0; i < len(a); i++ { fmt.Println(a[i]) } for index, val := range a { fmt.Printf("a[%d]==%d\n", index, val) } }
6.数组是值类型,因此改变副本的值,不会改变本身的值
package main import "fmt" func test2() { var a [10]int b := a b[0] = 100 fmt.Println(a) } //传递指针 func test3(arr *[5]int) { (*arr)[0] = 1000 } func main() { //test2() var a [5]int //传 地址,改变 值类型 test3(&a) fmt.Println(a) }
7.费波纳茨数列
package main import "fmt" //菲波那切数列,非递归方式实现,打印前50个数 func fab(n int){ var a[]uint64 a = make([]uint64,n) a[0]=1 a[1]=1 for i:=2;i<n;i++{ a[i]=a[i-1]+a[i-2] } for _,v:=range a{ fmt.Println(v) } } func main(){ fab(50) }