Go基础-常量指针

本文介绍了Go语言中常量的定义、声明以及不同类型,包括常量间的运算。同时详细讲解了指针的概念、垃圾回收机制,以及数组指针、指针数组、切片与栈的概念。还涵盖了数据结构中的堆和栈,以及关键字和标识符的使用规则。
摘要由CSDN通过智能技术生成
  • 常量

    • 定义

      • 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.形参
        • 栈又称堆栈, 用来存放程序暂时创建的局部变量,也就是我们函数的大括号{ }中定义的局部变量。
        • 栈是先进后出,往栈中放元素的过程,称为入栈,取元素的过程称为出栈。
        • 栈可用于内存分配,栈的分配和回收速度非常快
  • 类型别名
  • 注释
    • //单行注释
    • /*...*/ 多行注释
  • 关键字和标识符
    • 关键字不能作标识符使用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值