一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第27天,点击查看活动详情。
前言
我们在写程序或者运行程序的时候都需要内存,需要进行申请内存以及内存分配。像c、c++等一些语言,内存是由开发者管理的,需要主动申请和释放。但是在Go语言中,内存由Go语言自己管理,开发者只需要声明变量,就会根据变量类型分配相应的内存。
GO语言内存空间分为堆内存和栈内存,关系如下所示:
我们常常说的内存垃圾回收就是针对堆内存的垃圾回收。
变量
一个数据类型,在声明初始化后都会赋值给一个变量,变量存储了程序运行所需的数据,比如:
var s string
变量的赋值
变量可通过=运算符赋值,也就是修改变量的值。如果在声明一个变量时给这个变量赋值这种操作称为变量的初始化。
//1.声明时直接初始化
var s string = 'yzy'
//2.声明之后再进行初始化
var s string
s = 'yzy'
//3.使用:=进行简单声明
s := 'yzy'
如要对一个变量赋值,这个变量必须有对应分配好的内存这样才可以对这块内存操作,完成赋值的目的。
注意:一个变量必须要经过声明、内存分配才能赋值才可以在声明的时候进行初始化,指针类型(包括map、chan)声明的时候并没有自动分配内存,不能对其进行赋值操作。
变量初始化
声明一些类型的变量时,变量的零值不能满足要求,这时就需在变量声明的同时进行赋值,这个过程称为变量的初始化。