-
常量
-
定义
- Go使用const定义常量,用于存储不会改变的数据类型,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔类型,数字型(整数型,浮点型,复数)和字符串类型
-
声明
- const 常量名 [type] =value (type 可以省略)
- const pi = 3.14(也可以批量声明)
- 常量间的所有算术运算、逻辑运算和比较运算的结果也是常量,对常量的类型转换操作或以下函数调用都是返回常量结果:len、cap、real、imag、complex 和 unsafe.Sizeof。
- 批量声明的常量,除了第一个外其它的常量右边的初始化表达式都可以省略
- iota常量生成器
- 在一个const声明语句中,在第一个声明的常量所在的行,iota将会被重置位0,然后每有一个常量声明的行加1
-
-
指针
-
定义
- 指针是一个变量,是一种特殊的变量,存储的数据不仅仅是一个普通的值,而是另一个变量的内存地址。并且在整个内存中,有一个唯一的地址,用来进行标识,指向这个地址的变量就成为指针。
- 垃圾回收比较容易对不会发生偏移的指针进行检索和回收。
- 一个指针变量可以指向任何一个值的内存地址,它所指向的值的内存地址在 32 和 64 位机器上分别占用 4 或 8 个字节,占用字节的大小与所指向的值的大小无关。
-
分类
-
数组指针
- 定义指针,指向数组;它是一个指针,但是数据类型为数组,或者说指向数组
- var 数组指针变量 *[下标]类型
- 将数组指针作为函数参数
-
指针数组
- 数组元素是指针
- var 数组名 [下标]*类型
- 指针数组指的是一个数组中存储的都是地址(也就是指针)也就是存储了地址的数组。
-
指针与切片
- 切片,由指向起始元素的原始指针、元素数量和容量组成。
- var p *[]类型
-
空指针
- new() 函数可以创建一个对应类型的指针,创建过程会分配内存,被创建的指针指向默认值。
- var p *int
- 不要操作没有合法指向的内存
-
-
使用
- var 指针变量名 *类型 (默认值为nil)
- &来获取变量的内存地址(取地址操作)ptr:=&v
- 取地址操作符&和取值操作符*是一对互补操作符,&取出地址,*根据地址取出地址指向的值
-
-
变量的生命周期
-
作用域
- 全局变量:它的生命周期和整个程序的运行周期是一致的;
- 局部变量:它的生命周期则是动态的,从创建这个变量的声明语句开始,到这个变量不再被引用为止;
- 形式参数和函数返回值:它们都属于局部变量,在函数被调用的时候创建,函数调用结束后被销毁。
-
数据结构
- 堆heap
- make(slice,map,channel),new
- 堆是用于存放进程执行中被动态分配的内存段。它的大小并不固定,可动态扩张或缩减
- 栈stack
- 栈帧存储:1.局部变量 2.形参
- 栈又称堆栈, 用来存放程序暂时创建的局部变量,也就是我们函数的大括号{ }中定义的局部变量。
- 栈是先进后出,往栈中放元素的过程,称为入栈,取元素的过程称为出栈。
- 栈可用于内存分配,栈的分配和回收速度非常快
- 堆heap
-
- 类型别名
- 注释
- //单行注释
- /*...*/ 多行注释
- 关键字和标识符
- 关键字不能作标识符使用
Go基础-常量指针
最新推荐文章于 2024-07-02 13:00:00 发布
本文介绍了Go语言中常量的定义、声明以及不同类型,包括常量间的运算。同时详细讲解了指针的概念、垃圾回收机制,以及数组指针、指针数组、切片与栈的概念。还涵盖了数据结构中的堆和栈,以及关键字和标识符的使用规则。
摘要由CSDN通过智能技术生成