IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Golang iota 标识符应用教程 -> 正文阅读

[游戏开发]Golang iota 标识符应用教程

iota 用于创建递增常量非常有用,但也有不适合的应用场景。本文介绍几个适合使用itoa的示例,同时也提醒一些场景小心使用。

基本iota 用法

首先我们从它的基本用法开始:

const (
StarHyperGiant = iota
StarSuperGiant
StarBrightGiant
StarGiant
StarSubGiant
StarDwarf
StarSubDwarf
StarWhiteDwarf
StarRedDwarf
StarBrownDwarf
)

上面代码定义了一组常量类型,初始值使用 itoa 标识符赋值,告诉Go编译器第一个常量从0开始,后续常量依次加一.

当const在声明块前出现时,会重置计数器为0。下面代码一组枚举自会从零到四重新赋值:

const (
    StarHyperGiant = iota
    StarSuperGiant
    StarBrightGiant
    StarGiant
    StarSubGiant
)
const (
    StarDwarf = iota
    StarSubDwarf
    StarWhiteDwarf
    StarRedDwarf
    StarBrownDwarf
)

修改缺省枚举类型

枚举常量默认为无类型整数,我们也可以使用其他数值类型覆盖缺省类型,请看示例:

const (
    StarDwarf byte = iota
    StarSubDwarf
    StarWhiteDwarf
    StarRedDwarf
    StarBrownDwarf
)

还可以指定任何数值类型,能表示整型或浮点类型。上面代码每个常量被声明为byte类型。

表达式中使用itoa

当itoa出现在表达式,实现机制和上面一致。编译器应用表达式对每个连续itoa增长值,下面代码给枚举成员赋偶数值:

const (
    StarHyperGiant = 2. 0*iota
    StarSuperGiant
    StarBrightGiant
    StarGiant
    StarSubGiant
)

输出结果如下:

StarHyperGiant = 0 [float64]
StarSuperGiant = 2 [float64]
StarBrightGiant = 4 [float64]
StarGiant = 6 [float64]
StarSubGiant = 8 [float64]

跳过枚举值

对于枚举常量赋值,我们还可以跳过某些值。给空标识符则跳过值,下面示例跳过0和64:

_ = iota // value 0
StarHyperGiant = 1 << iota
StarSuperGiant
StarBrightGiant
StarGiant
StarSubGiant
_ // value 64
StarDwarf
StarSubDwarf
StarWhiteDwarf
StarRedDwarf
StarBrownDwarf

因为我们跳过了0,首先第一个赋值常量从1开始。表达式 1<< iota 的结果为 1 << 1 = 2 ,第六个位置返回64,但该值被跳过,输出结果:

StarHyperGiant = 2
StarSuperGiant = 4
StarBrightGiant = 8
StarGiant = 16
StarSubGiant = 32
StarDwarf = 128
StarSubDwarf = 256
StarWhiteDwarf = 512
StarRedDwarf = 1024
StarBrownDwarf = 2048

我们再来一个示例:

const (
	_  = 1 << (iota * 10) // ignore the first value
	KB                    // decimal:       1024 -> binary 00000000000000000000010000000000
	MB                    // decimal:    1048576 -> binary 00000000000100000000000000000000
	GB                    // decimal: 1073741824 -> binary 01000000000000000000000000000000
)

输出结果为:

KB =  1024
MB =  1048576
GB =  1073741824

更疯狂的用法

我们也可以使用itoa配对给同一行的常量赋值,同时也可以使用下划线跳过配对中的值:

const (
	tomato, apple int = iota + 1, iota + 2
	orange, chevy
	ford, _
)

配对使用itoa对每一行进行计算:

tomato =  1, apple = 2
orange =  2, chevy = 3
ford   =  3

和所有编程语言一样,可以这么做,但并意味着就应该这么做。建议生产环境不要写这种让人迷惑的代码。

总结

本文通过示例介绍Golang 的itoa表示符的几种应用场景。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 13:08:06  更:2021-10-04 13:09:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 2:48:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码