开发者

解读golang中的const常量和iota

开发者 https://www.devze.com 2022-12-30 10:52 出处:网络 作者: liberg
目录golang中的const常量和iotagolang定义常量定义常量定义特定类型的常量总结golang中的const常量和iota
目录
  • golang中的const常量和iota
  • golang定义常量
    • 定义常量
    • 定义特定类型的常量
  • 总结

    golang中的const常量和iota

    golang中通过var定义变量,通过const定义常量。

    常量只能是基本的简单值类型,常量一经定义其值不可修改(类比Java中的final)。

    const (
     MaxInt = int(^uint(0) >> 1)
     MinInjavascriptt = -MaxInt - 1
    )
    const PI = 3.14
    PI = 3.14159//编译错误,Cannot assign to PI
    
    • iota是一个特殊常量,可以认为是一个可以被编译器修改的常量。
    • iota在const关键字出现时将被重置为0,const中每新增一行常量声明将使 iota 计数加1,编程客栈因此iota可作为const 语句块中的行索引。
    const (
     a  = 1         //1 (iota=0)
     b            //1 (iota=1,同上一行,相当于写b=1)
     c  = b + iota      //3 (iota=2,b=1)
     d            //4 (iota=3,同上一行,相当于写b+iota,b=1)
     e            //5 (iota=4,同上一行,相当于写b+iota,b=1)
     f  = "last one but one" // (iota=5)
     end = iota        //6 (iota=6)
    )
    fmt.Println(a, reflect.TypjseOf(a))
    fmt.Println(b, reflect.TypeOf(b))
    fmt.Println(c, reflect.TypeOf(c))
    fmt.Println(d, reflect.TypeOf(d))
    fmt.Println(e, reflect.TypeOf(e))
    fmt.Println(f, reflect.TypeOf(f))
    fmt.Println(end, reflect.TypeOf(end))
    /*
    输出:
    1 int
    1 int
    3 int
    4js int
    5 int
    last one but one string
    6 int
    */

    golang定义常量

    在所有的编程语言当中常量都代表一个固定的值,一旦常量被定义则无法修改。在Golang中使用const关键字进行常量声明。

    定义常量

    Golang定义常规类型的常量可以忽略类型。

    const SUCCESS = true
    const FAIL = false

    定义多个相同类型的常量

    cojsnst (
    CONST1 = 0
    CONST2 = 1
    CONST3 = 2
    )

    定义特定类型的常量

    定义特定类型的常量需要根据实际情况来决定。

    假如我们现在用常量来声明用户的三个基本状态(正常,禁止登录,删除),一般这种情况我们会首先声明一个用户状态的类型。

    声明用户状态类型:

    type UserStatu开发者_JS培训s int

    定义用户状态常量:

    const (
    USER_STATUS_NORMAL UserStatus = iota
    USER_STATUS_DISABLED_LOGIN
    USER_STATUS_DELETE
    )

    完整示例:

    package user
    //Status 用户类型.
    type Status int
    const (
    //STATUS_NORMAL 状态正常
    STATUS_NORMAL Status = iota
    //STATUS_DISABLED_LOGIN 禁止登录.
    STATUS_DISABLED_LOGIN
    //STATUS_DELETE 已删除.
    STATUS_DELETE
    )

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号