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

2018-02-26  本文已影响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

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

上一篇 下一篇

猜你喜欢

热点阅读