美文网首页
【GOLANG】Go 的参数是如何传递的?

【GOLANG】Go 的参数是如何传递的?

作者: 小伙纸2022 | 来源:发表于2022-11-12 23:59 被阅读0次

    ### 在 Golang 中所有的类型传递都是通过值传递实现的

    #### 举例说明:

    1. 普通参数

    ```

    func main() {

        x, y := int64(1), int64(2)

        Swap(x, y)

        fmt.Println(x, y) //1 2

        p := Person{1, "boy"}

        attachPersonName(&p)

        fmt.Println(p) //{1 boy}

    }

    func Swap(x, y int64) {

    x, y = y, x

    }

    type Person struct {

    Id  int

    Name string

    }

    func attachPersonName(p Person) {

    p.Name = strings.ToUpper(p.Name)

    }

    ```

    2. slice

    ```

    func main(){

        data := []int64{1, 2, 3}

    SortSlice(data)

    fmt.Println(data) //[3 2 1]

    }

    func SortSlice(data []int64) {

    sort.Slice(data, func(i, j int) bool {

    return data[i] > data[j]

    })

    }

    ```

    > **因为slice值包含指向第一个slice元素的指针,因此向函数传递slice将允许在函数内部修改底层数组的元素。

    换句话说,复制一个slice只是对底层的数组创建了一个新的slice别名

    另外:map,chan和slice是类似的**

    相关文章

      网友评论

          本文标题:【GOLANG】Go 的参数是如何传递的?

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