-
值类型
- 数组
- 结构体struct
- string
- float
- int
- rune
- byte
-
引用类型
- map
- slice(切片)
- channel
- inertface{}
- pointer(指针)
- func(函数)
-
什么是值类型
- 变量直接存储值,内存通常在栈中分配
- 数据存储: 值类型的变量直接包含其数据的实际值。
- 内存分配: 在栈上分配内存。
- 传递方式: 传递的是数据的副本。
- 赋值操作: 赋值操作会创建变量的副本,修改一个变量不会影响另一个。
- 原始类型和结构体: 整数、浮点数、布尔、字符、数组、结构体等都属于值类型。
-
什么是引用类型
- 变量存储的是一个地址,这个地址对应的空间里才是真正存储的值,内存通常在堆中分配
- 数据存储: 引用类型的变量存储的是数据的内存地址(指针)。
- 内存分配: 在堆上分配内存,变量本身在栈上。
- 传递方式: 传递的是数据的引用(地址)。
- 赋值操作: 赋值操作会复制引用,不会复制整个数据。
- 切片、映射、通道、接口等: 这些属于引用类型。
-
值类型和引用类型的区别
- 内存分配: 值类型在栈上分配,引用类型在堆上分配。
- 传递方式: 值类型传递的是数据的副本,引用类型传递的是数据的引用。
- 赋值操作: 值类型赋值会创建副本,引用类型赋值会复制引用,不会复制整个数据。
- 变量修改: 修改一个值类型的变量不会影响其他变量,而修改引用类型的数据会影响所有引用该数据的变量。
go语言中值类型和引用类型
最新推荐文章于 2024-07-20 17:11:51 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)