美文网首页
go语言(在函数间传递数组)

go语言(在函数间传递数组)

作者: 夜空中乄最亮的星 | 来源:发表于2018-02-26 10:56 被阅读0次

    根据内存和性能来看,在函数间传递数组是一个开销很大的操作。在函数之间传递变量时,总是以值的方式传递的。如果这个变量是一个数组,意味着整个数组,不管有多长,都会完整复制,并传递给函数。

    不过还有一种更好且更有效的方法来处理这个操作。
    可以只传入指向数组的指针,这样只需要复制 8 字节的数据而不是复制整个数组后进行传递~!

    示例:

    package main
    
    import "fmt"
    
    var list = []int{1,2,3,4,5}
    
    func add(list *[]int)  {
        for _,v := range *list  {
            v++
            fmt.Println(v)
        }
    }
    
    func main() {
        add(&list)
    }
    

    运行结果:

    2
    3
    4
    5
    6
    

    不仅保证了正确的运行结果,而且还减少了内存的占用。不过需要意识到,因为现在传递的是指针,所以如果改变指针指向的值,会改变共享的内存。

    相关文章

      网友评论

          本文标题:go语言(在函数间传递数组)

          本文链接:https://www.haomeiwen.com/subject/szrdxftx.html