2. Go中函数参数传递类型

1. 概述

Go语言中,函数的参数的传递类型,分为值传递引用传递。但本质就只有值传递,引用传递本质传递是数据存储空间的地址值。

2. 值传递和引用传递

Go语言中如下数据类型为值传递

  • 基本数据类型中int系列、float系列、bool、string、byte
  • 数组
  • 结构体

注意:上述的数据类型,在分配内存的时候,使用的是new函数。

如下数据类型为引用传递

  • map
  • 切片slice
  • 管道chan
  • interface
  • 函数类型
  • 所有数据类型的指针类型

注意:map、slice、chan在分配内存的时候,使用的是make函数。

也就是说:值类型的内存空间使用new来分配,引用数据类型的空间使用的是make来分配。

3. 值传递和引用传递的特点

值传递和引用传递的特点如下:

  • 值类型默认是值传递,变量直接存储值,内存通常在占中分配
  • 引用数据类型默认是引用传递,变量存储的是一个地址值,这个地址对应的空间才为存储数据的地址。内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的空间就成为一个垃圾,由GC来回收。
# Go
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×