slice函数传参是传值不是传引用

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import (
    "fmt"
)

func main() {
    slice := make([]int, 3, 5)
    appendTest(slice)
    fmt.Println(slice)
}

func appendTest(slice []int) {
    slice = append(slice, 5)
}

输出结果:

[0 0 0]

appendTest对slice的修改并未在父函数中生效。

slice函数传参是传值不是传引用》上有1条评论

  1. K.o.s

    切片传参,参数对象 只是一个指向切片的 一指针,你slice = append(slice,5) 明显是产生一些新的指针。可你把他赋值传参 是不起作用的。go的传参 地址是不能回值
    func appendTest(slice []int) []int {
    return append(slice, 5)
    }
    func main() {
    slice := make([]int, 3, 5)
    slice = appendTest(slice)
    fmt.Println(slice)
    }

    func appendTest(slice *[]int) {
    *slice = append(*slice, 5)
    }
    func main() {
    slice := make([]int, 3, 5)
    appendTest(&slice)
    fmt.Println(slice)
    }

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注