zoukankan      html  css  js  c++  java
  • <3>Golang基础进阶——常量和枚举

    Golang:常量和枚举

    常量—恒定不变的量

    相对于变量,常量是恒定不变的值,例如圆周率。

    常量表示:

    const pi = 3.1415
    const e = 2.7123

    常量 明和变量声明非常 似,只是把  var  换成了  const 

    多常量声明:

    const (
    pi = 3.1415
    e = 2.7123
    )

    常量在编译期确定,所以可以用于数组声明:

    const size = 4
    var arr [size]int

    枚举—一组常量值

    一般情况下一组常量附带空变量

    func enum2() {
    const (
    python = 0
    java
    golang = 1
    php
    )
    fmt.Println(python, java, golang, php)
    }

    func main() {
    enum2()
    // 0 0 1 1
    }

    Go语言中现阶段没有枚举,可以使用常量配合 iota 模拟枚举。

    type Weapon int

    const (
    Arrow Weapon = iota
    Shuriken
    SnoperRifle
    FileN
    NameN
    )

    func main() {
    fmt.Println(Arrow, Shuriken, SnoperRifle,FileN,NameN) // 0 1 2 3 4

    var weapon Weapon = NameN
    fmt.Println(weapon) // 4
    }

    Array常量的类型标识为 Weapon 这样标识后,const下方的常量可是默认类型的,默认时默认使用前面指定 类型作为常量类型。该行使用iota进行常量值自动生成。iota起始值为0,一般情况下也是建议枚举从0开始,让每个枚举类型都有一个空值,方便业务和逻辑的灵活使用。

    示例:标志位常量

    const (
    FlagNone = 1 << iota // 1*2^0
    FlagRed // 1*2^1
    FlagGreen // 1*2^2
    FlagBlue // 1*2^3
    )

    func main() {
    fmt.Printf("%d %d %d ", FlagRed, FlagGreen,FlagBlue)
    fmt.Printf("%b %b %b ", FlagRed, FlagGreen, FlagBlue)

    //2 4 8
    //10 100 1000
    }

    面试小题:

    
    
    func main() {
    const (
    a = iota
    b
    c
    d = 8
    e = 8
    f = iota
    g
    )
    fmt.Println(a, b, c, d, e, f, g)
    // 输出结果:0 1 2 8 8 5 6

    const(
    x = iota
    y
    )
    fmt.Println(x, y)
    // 输出结果:0 1
    }
    加油,你们是最棒的!
  • 相关阅读:
    预习作业一
    20145234黄斐《java程序设计基础》第一周
    预习作业3
    开源 人脸识别 openface 实用介绍 实例演示 训练自己的模型
    ubuntu 开机 输入密码 无法进入
    linux anaconda 管理 python 包
    如何从零开始做一个蓝牙机械键盘
    keil中结构体跨文件调用
    GPRS 通信
    如何查找EI 及SCI 索引
  • 原文地址:https://www.cnblogs.com/Wshile/p/12661228.html
Copyright © 2011-2022 走看看