golang之数组

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)
}

 8.声明数组,遍历数组

package main

import "fmt"

//数组的初始化
func testArray() {
    var a [5]int = [5]int{1, 2, 3, 4, 5}
    var a1 = [5]int{1, 2, 3, 4, 5}
    var a2 = [...]int{38, 283, 48, 38, 348, 387, 484}
    var a3 = [...]int{1: 100, 3: 200}
    var a4 = [...]string{1: "hello", 3: "world"}
    fmt.Println(a)
    fmt.Println(a1)
    fmt.Println(a2)
    fmt.Println(a3)
    fmt.Println(a4)
}

//多维数组
func muchArray() {
    //两行五列的数组
    var a [2][5]int = [...][5]int{{1, 2, 3, 4, 5}, {7, 8, 9, 11, 12}}
    for row,v:=range a{
        for col,v1:=range v{
            fmt.Printf("(%d,%d)=%d\n",row,col,v1)
        }
    }
}

func main() {
    //testArray()
    muchArray()
}

 

posted @ 2017-12-31 00:32  py鱼  阅读(229)  评论(0编辑  收藏  举报
点我回主页