前言:堆栈存储简介

  • 栈(stack) : 一种拥有特殊规则的线性表数据结构,只允许线性表的一端放入数据,之后再这一端取出数据,按照后进先出(lifo)的顺序。
  • 堆(heap) : 一段非连续的存储空间,堆分配内存和技分配内存相比,堆适合不可预知大小的内存分配 ,但是为此付出的代价是分配速度较慢 ,而且会形成 内 存碎片。

定义简介

首先不管是值类型还是引用类型的数据都在存储中存在的,值类型和引用类型二者区别主要体现在变量(容器)及变量的赋值。

  • 值类型数据:变量直接存储值,赋值重新开辟新空间复制一份数据
  • 引用类型数据:变量存储的是存在该值得地址,赋值 是把这个地址复制一份,原始数据只有一份,原始数据的地址存储在两个地方。

Golang 数据结构

值类型是存储在栈,引用类型是存储在堆。

  • 值类型:基本数据类型int、float、bool、string以及array和struct
  • 引用类型:指针,slice切片,map,管道channel,interface等

:值类型可以不初始化直接使用,但是引用类型声明之后必须要初始化才能使用