数组与切片

ace_kylin · 2018-10-12 16:12:36 · 1021 次点击 · 预计阅读时间不到 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2018-10-12 16:12:36 的文章,其中的信息可能已经有所发展或是发生改变。

数组

定义:是同一种数据类型的固定长度的序列。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())
    }
}

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1021 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传