# 数组
### 定义:是同一种数据类型的**固定长度**的序列。var a [len]int
#### 长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型,数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1,访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic
#### 数组是值类型,因此改变副本的值,不会改变本身的值
example:fibonacci非递归:
```
func fibonacci() {
fib := [20]int64{0: 1, 1: 1}
for i := range fib {
if i == 0 || i == 1 {
continue
}
fib[i] = fib[i-1] + fib[i-2]
}
fmt.Println(fib)
}
```
递归实现fibonacci:
```
func fibonacciRecursion(i int64) int64 {
if i <= 1 {
return 1
}
return fibonacciRecursion(i-1) + fibonacciRecursion(i-2)
}
```
函数实现fibonacci:
```
func fibonacciFunc() func() int64 {
var a, b int64
a, b = 0, 1
return func() int64 {
a, b = b, a+b
return a
}
}
```
以上函数通过main调用:
```
func main() {
fibonacci()
for i := 0; i < 20; i++ {
fmt.Printf("%d\t", fibonacciRecursion(int64(i)))
}
fmt.Println()
fib := fibonacciFunc()
for i := 0; i < 20; i++ {
fmt.Printf("%d\t", fib())
}
}
```
有疑问加站长微信联系(非本文作者))