go语言学习 ---iota
2024-10-15 12:27:11
iota
iota,特殊常量,可以认为是一个可以被编译器修改的常量。
iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
iota 可以被用作枚举值:
const (
a = iota
b = iota
c = iota
)
第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:
const (
a = iota
b
c
)
iota 用法
package main import "fmt" func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
以上实例运行结果为:
0 1 2 ha ha 100 100 7 8
再看个有趣的的 iota 实例:
package main import "fmt"
const (
i=1<<iota
j=3<<iota
k
l
) func main() {
fmt.Println("i=",i)
fmt.Println("j=",j)
fmt.Println("k=",k)
fmt.Println("l=",l)
}
以上实例运行结果为:
i= 1
j= 6
k= 12
l= 24
iota 表示从 0 开始自动加 1,所以 i=1<<0, j=3<<1(<< 表示左移的意思),即:i=1, j=6,这没问题,关键在 k 和 l,从输出结果看 k=3<<2,l=3<<3。
简单表述:
i=1
- :左移 0 位,不变仍为 1;
- j=3:左移 1 位,变为二进制 110, 即 6;
- k=3:左移 2 位,变为二进制 1100, 即 12;
- l=3:左移 3 位,变为二进制 11000,即 24。
最新文章
- 【.net 深呼吸】细说CodeDom(2):表达式、语句
- js和jquery获取当前对象的子元素
- grid安装
- ligerUI布局时,Center中的Tab高度太小问题解决
- 智能车学习(五)&mdash;&mdash; dac学习
- [CS231n-CNN] Image classification and the data-driven approach, k-nearest neighbor, Linear classification I
- tar -cvPf new.tar `rpm -ql vsftpd` 建议不要用绝对路径&#39;/&#39;
- Gulp-入门教程 搭配环境
- HDU2196-Computer
- iOS安全攻防(二十三):Objective-C代码混淆
- S70卡
- winform控件跨线程委托
- hdu 1394 Minimum Inversion Number(这道题改日我要用线段树再做一次哟~)
- 配置apache,及mac下安装mysql
- Apache网站服务源码安装与站点部署
- PHP实现简单的评论与回复功能还有删除信息
- &#9733;RFC标准库_目录链接
- 学习Identity Server 4的预备知识
- 登录注册页面(连接MySQL8.0.15版本)
- java将long数据转为int类型的方法
热门文章
- 实用的表格内省略号和换行(兼容IE6)
- Android -- 保存文件
- apache 伪静态 .htaccess
- _com_util::ConvertBSTRToString的使用问题
- const char * 转换为char*
- Window 下安装 Redis
- [effictive c++] 条款04 确定对象被使用前已被初始化
- Python网络编程 - 一个简单的客户端Get请求程序
- Strange Addition
- Hibernate(六)一对多映射(多对一)