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

2022-11-12  本文已影响0人  小伙纸2022

### 在 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是类似的**

上一篇下一篇

猜你喜欢

热点阅读