重学Golang-iota的使用总结

        近期项目需要用到go语言来开发,已经一两年没写过了,这次打算把go学的深一些,分享一些学到的高级用法,希望大家批评指正。

        iota

        在Go语言中,iota是一个预定义的常量生成器,主要用于生成一系列以递增方式定义的常量值。iota只能在常量的表达式中使用,并且每次出现时,它的值会根据上下文递增。

        下面是iota的几种使用总结:

        1.递增的常量

         iota初始是从0开始递增,例如下面例子,定义了A、B、C三个常量,由iota初始化A为0,紧接着的B、C每次递增1。

package main

import "fmt"

const (
    A = iota // 0
    B        // 1
    C        // 2
)

func main() {
    fmt.Println(A, B, C) // 输出: 0 1 2
}

        2.递增的表达式

        可以按照表达式来自定义递增的规则,例如下面例子,A在初始化时,按照1 << iota的表达式来进行递增,即每次常量乘以2来递增。

package main

import "fmt"

const (
    A = 1 << iota // 1
    B             // 2
    C             // 4
)

func main() {
    fmt.Println(A, B, C) // 输出: 1 2 4
}

        3.搭配枚举

        iota常常被用于枚举类型的定义中,简化常量的赋值。

package main

import "fmt"

type Weekday int

const (
    Sunday Weekday = iota
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
)

func main() {
    fmt.Println(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
    // 输出: 0 1 2 3 4 5 6
}

        4.跳过

        使用空白标识符 _ 跳过iota中的某些值。

package main

import "fmt"

const (
    A = iota + 1 // 1
    _            // 跳过 B
    C            // 3
)

func main() {
    fmt.Println(A, C) // 输出: 1 3
}

        5.iota只能在const中使用

package main

import "fmt"

func main{
    fmt.Println(iota)//编译错误
}

        6.const会重置iota的值

package main

import "fmt"

const(
    A = iota //0
    B //1
    C //2
)

const (
    D = iota //0
)

func main(){
     fmt.Println(A,B,C,D)   
}

        7.在同一行中的使用

package main

import "fmt"

const(
    A,B = 1 + iota,2 + iota //1,2
    C,D //2,3
    E,F //3,4
)

func main(){
    fmt.Println(A,B,C,D,E,F)//1,2,2,3,3,4
}

        8.中间插入其他值

package main

import "fmt"

const(
    A = iota //0
    B = 100
    C = iota//2
    D //3
)

func main(){
    fmt.Println(A,B,C,D)//0 100 2 3
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值