zoukankan      html  css  js  c++  java
  • Golang 学习笔记 003 标识符、变量和常量

    标识符

    标识符是一类具有特殊意义的词,常见的有变量、常量、函数名等。

    标识符的命名规范

    • 标识符有字母、数字、下划线组成
    • 不能以数字开头
    • 严格区分大小写
    • 单个下划线(_)是一个特殊的标识符,被称为空标识符,可以表示任何标识符,但对应的值会被忽略,比如忽略某个函数的返回值,所以只能被作为占位符使用。
    • 不能使用系统关键字和保留字作为标识符
    • 推荐使用驼峰命名法

    关键字

    Go 中有 25 个关键字,如下:

    breakdefaultfuncinterfaceselect
    case defer go map struct
    chan else goto package switch
    const fallthrough if range type
    continue for import return var

    另外还有 30 多个预定义标识符

      • 内建常量: true false iota nil

      • 内建类型: int int8 int16 int32 int64
        uint uint8 uint16 uint32 uint64 uintptr
        float32 float64 complex128 complex64
        bool byte rune string error

      • 内建函数: make len cap new append copy close delete
        complex real imag
        panic recover

    变量

    程序运行过程中使用的数据都是保存在内存中的,程序要找到对应的数据需要通过数据在内存中的地址才可以找到,内存地址类似与0x00000000,如果我们编写程序的时候直接使用这些内存地址,会让我们编写程序变的困难,还会导致程序代码的可读性差,不好维护,这个时候,我们就可以使用变量将这些内存地址保存起来,以后直接使用变量就可以操作数据。变量只是方便给我们人类看的,程序内部运行时,还是直接使用内存地址。

    变量的类型

    变量是用来存储数据的,不同的变量存储的数据的类型也是不一样的,常见的数据类型有,数值型、字符型、布尔型等。

    变量的声明与初始化

    在 Go 中变量的声明格式为:

    // 声明格式
    // var 变量名 变量类型
    // 示例: 一次声明一个变量
    var name string
    var age int
    var weight float
    // 示例: 一个声明多个变量
    var (
        name string
        age int
        weight float
    )
    
    // 初始化
    // var 变量名1 变量类型 = 表达式
    // var 变量名2 变量类型
    // 变量名2 = 表达式
    
    // 先声明再初始化
        var name string
        name = "resn"
    // 示例: 一次声明一个变量并初始化
        var name string = "resn"
    
    //  示例: 一次声明并初始化多个变量
    var name,age = "resn", 12
    
    // 使用类型推导: 可在声明变量时,不指定类型,此时编译器会根据等号右边的值来推导出变量的类型
     var name = "resn"
     var age = 12
     
     // 使用短变量声明: 在函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明。函数外的每个语句都必须以关键字开始(var, func 等等),因此 := 结构不能在函数外使用。
     name := "resn"
     age := 12
    

    匿名变量

    匿名变量就是前面提到的单下划线,在进行多重赋值的时候,如果我们想忽略某个值,就可以使用匿名变量,一般是一个函数有多个返回值,想忽略其中某些值时使用。

    解释器不会给匿名变量分配内存,也不占用命名空间,所以不存在重复声明的问题,

    // 示例: 最简单直观的示例
    func main() {
        name,_,_  := "resn1", 12, 180
        fmt.Println("Hello ", name)
    }
    // 示例: 使用函数时
    func anonymousVar() (string,int,int) {
        return "resn", 12,180
    }
    
    func main() {
        name,_,_  :=  anonymousVar()
        fmt.Println("Hello ", name)
    }
    

    常量

    常量就是不变的值,在程序运行的过程中,有些值不会发生改变,这些值就可以定义为常量,和定义变量不同的是,定义常量使用的关键字 const, 在定义常量时,必须为其赋值。使用 const 定义的常量无法二次赋值,否则会报错

    const PI = 3.14   // 圆周率 π
    const e = 2.71828 // 自然常数 e
    

    对比变量和常量,变量就像是我们的年龄,每年一变,而常量就相当于我们的身份证号,一个人一辈子基本就只有一个身份证号。

    常量计数器 iota

    iota 是 go 中的常量计数器,仅用于常量表达式
    在 const 关键字出现时 iota 将置为 0。在 const 中每新增一行,iota 的计数增加一次。使用 iota 可以使定义简化,在定义枚举时很方便。

    // 示例 1:一般情况
    const (
        a = iota    // 0
        b           // 1
        c           // 2
        d           // 3
    )
    
    // 示例 2:插队情况 1
    const (
        a = iota    // 0
        b           // 1
        _           // 跳过
        c           // 3
    )
    
    // 示例 3:插队情况 2
    const (
            a = iota      // 0
            z = "resn"    // resn
            b = iota      // 2 这里如果不重新赋值为 iota,后面的值会和变量 z 相同
            c             // 3  
    )
    
    // 示例 4:多个 iota 在一行时
    const (
        a,b = iota,iota*2   // 0,0
        c,d                 // 1,2
        e,f                 // 2,4
    )
    





  • 相关阅读:
    Oracle 内存参数调优设置
    查询Oracle正在执行的sql语句及执行该语句的用户
    oracle审计详解
    Oracle数据库的性能调整
    性能监控工具的配置及使用
    windows端5款mysql客户端工具
    Oracle 11g密码过期问题及解决方案
    PLSQL安装、PLSQL汉化、激活
    Mercurial 安装及使用
    Servlet基础(二) Servlet的生命周期
  • 原文地址:https://www.cnblogs.com/resn/p/12144865.html
Copyright © 2011-2022 走看看