golang学习笔记7-指针、值类型与引用类型
注:本人已有C,C++,Python基础,只写本人认为的重点。
本节很短,因为go的指针概念,用法(取地址,解引用)和C/C++一样,但还是有些地方需要牢记。
go和C/C++定义指针的语法不同,C/C++的星号在变量类型之后,go的星号在前:var 变量名 *变量类型。
内存通常分为四大块:堆区,栈区,全局区,代码区,这些概念百度了解即可。go中的变量按其内存分配机制,有值类型和引用类型。值类型就是变量直接存储值,通常在栈中存储,引用类型就是变量存放另一个变量的地址,通常在堆中存储。当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由go编译器(GC)来回收,这就是go的垃圾回收机制,避免了C/C++中的内存泄漏问题。
在go中,值类型和引用类型分别有多种,如下:
六个值类型:整数型,浮点型,bool,字符串,数组,结构体
五个引用类型:指针,切片(slice),map,管道(channel),接口(interface)