golang中的const常量和iota
golang中通过var定义变量,通过const定义常量。
常量只能是基本的简单值类型,常量一经定义其值不可修改(类比Java中的final)。
1
2
3
4
5
6
|
const ( MaxInt = int (^ uint ( 0 ) >> 1 ) MinInt = -MaxInt - 1 ) const PI = 3.14 PI = 3.14159 //编译错误,Cannot assign to PI |
-
iota
是一个特殊常量,可以认为是一个可以被编译器修改的常量。 -
iota
在const关键字出现时将被重置为0,const中每新增一行常量声明将使 iota 计数加1,因此iota可作为const 语句块中的行索引。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
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.TypeOf(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 4 int 5 int last one but one string 6 int */ |
golang定义常量
在所有的编程语言当中常量都代表一个固定的值,一旦常量被定义则无法修改。在Golang中使用const关键字进行常量声明。
定义常量
Golang定义常规类型的常量可以忽略类型。
1
2
|
const SUCCESS = true const FAIL = false |
定义多个相同类型的常量
1
2
3
4
5
|
const ( CONST1 = 0 CONST2 = 1 CONST3 = 2 ) |
定义特定类型的常量
定义特定类型的常量需要根据实际情况来决定。
假如我们现在用常量来声明用户的三个基本状态(正常,禁止登录,删除),一般这种情况我们会首先声明一个用户状态的类型。
声明用户状态类型:
1
|
type UserStatus int |
定义用户状态常量:
1
2
3
4
5
|
const ( USER_STATUS_NORMAL UserStatus = iota USER_STATUS_DISABLED_LOGIN USER_STATUS_DELETE ) |
完整示例:
1
2
3
4
5
6
7
8
9
10
11
|
package user //Status 用户类型. type Status int const ( //STATUS_NORMAL 状态正常 STATUS_NORMAL Status = iota //STATUS_DISABLED_LOGIN 禁止登录. STATUS_DISABLED_LOGIN //STATUS_DELETE 已删除. STATUS_DELETE ) |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/linysuccess/article/details/102639706