常量在go语言中的运用示例
1 简介
在 Go 中,常量是使用 const 关键字声明的,并表示固定的、不可更改的值。 它们在编译时进行计算,这意味着它们的值必须在程序编译时知道,而不是在运行时知道。
顾名思义,CONSTANTS 的意思是固定的。在编程语言中也是一样的,即一旦定义了常量的值,就不能进一步修改它。可以有任何基本的常量数据类型,例如整数常量、浮动常量、字符常量或字符串文字。
如何申报: 常量的声明类似于变量,但使用 const 关键字作为前缀来声明具有特定类型的常量。不能使用“:=”语法声明它。
2 常量的主要特征:
声明: 常量是使用 const 关键字声明的,类似于变量,但不能使用短变量声明 := 语法声明它们。
去
const Pi = 3.14159
const Greeting string = "Hello, Go!"
- 类型:
常量可以保存字符、字符串、布尔值或数值。
- 范围:
常量可以在函数内部和外部声明,类似于变量。
- 不变性:
一旦声明并分配了值,常量的值就无法在程序执行期间更改。 任何修改常量的尝试都会导致编译时错误。
- 编译时评估:
常量表达式(包括涉及其他常量的计算)在编译时进行计算。 这允许使用数值常量进行高精度计算,甚至超过内置数字类型的限制,直到它们被分配给特定类型的变量。
- 非类型化数值常量:
可以在没有显式类型的情况下声明数字常量。 这些非类型化常量的行为类似于常规数字,可以在具有不同数字类型的作中使用,而无需显式类型转换,直到它们被分配给类型化变量。
- 非类型化和类型化数字常量:
类型化常量的工作方式类似于不可变变量只能与相同类型互作,而非类型化常量的工作方式类似于文字可以与类似类型互作。
在 Go 中可以声明带有或不带有类型的常量。下面是显示命名和未命名的类型化和非类型化数字常量的示例。
const untypedInteger = 123
const untypedFloating = 123.12
const typedInteger int = 123
const typedFloatingPoint float64 = 123.12
以下是 Go 语言中的常量列表:
数值常量(整数常量、浮点常量、复常数)
前缀指定基数或基数:0x 或 0X 表示十六进制,0 表示八进制,不表示十进制。
整数文字也可以有一个后缀,该后缀是 U(大写)和 L(小写)的组合,分别表示无符号和长它可以是十进制、八进制或十六进制常数,int 最多可以存储 64 位整数,有时甚至更少。
字符串
Go 支持两种类型的字符串文字,即 “ ”(双引号样式)和 (反引号)。
字符串可以使用 + 和 += 运算符连接。
字符串包含类似于字符文字的字符:纯字符、转义序列和通用字符。这是未类型的。
字符串类型的零值是空白字符串,可以用文字中的“”或表示。
字符串类型都可以通过使用 ==、!= 和 (用于比较相同类型) 等运算符进行比较
布尔常量
布尔常量: 布尔常量类似于字符串常量。它应用与字符串常量相同的规则。区别仅在于它有两个非类型常量 true 和 false。
不可改变常量的值,常量不可赋值给其他常量。
const Pi = 3.14
func main()
{
const trueConst = true
// Type definition using type keyword
type myBool bool
var defaultBool = trueConst // allowed
var customBool myBool = trueConst // allowed
// defaultBool = customBool // not allowed
fmt.Println(defaultBool)
fmt.Println(customBool)
}
3 常量用作枚举类型
const (
a = iota // 0
b = iota // 1
c = iota // 2
)
或者
const (
a = iota // 0
b // 1
c // 2
)
省略
const (
_ = iota // 0
b = iota * 10 // 1 * 10
c = iota * 10 // 2 * 10
)
分开写则重新计数
const (
a = iota // 0
b // 1
c // 2
)
const (
d = iota // 0
e // 1
f // 2
)
结合位运算
const (
_ = iota // 0
KB = 1 << (iota * 10) // 1 << (1 * 10)
MB = 1 << (iota * 10) // 1 << (2 * 10)
GB = 1 << (iota * 10) // 1 << (3 * 10)
TB = 1 << (iota * 10) // 1 << (4 * 10)
)
用于表示存储大小
type ByteSize float64
const (
a_ = iota // ignore first value by assigning to blank identifier
KB ByteSize = 1 << (10 * iota)
MB
GB
TB
PB
EB
ZB
YB
)
func main() {
fmt.Println(a, b, c, d, e, f)
//fmt.Println(b)
//fmt.Println(c)
//fmt.Println(d)
//fmt.Println(e)
//fmt.Println(f)
fmt.Println(a_, KB, MB, GB, TB, PB, EB, ZB, YB)
}
- 点赞
- 收藏
- 关注作者
评论(0)