面试题答案
一键面试1. 定义单个常量
- 语法:
const identifier [type] = value
,类型可以省略,Go 语言会根据值自动推断类型。例如:
const pi float64 = 3.14159
// 也可省略类型
const e = 2.71828
- 适用场景:当需要定义一个固定不变的值,例如数学常量、配置参数等场景。比如程序中需要使用圆周率
pi
或者自然常数e
时,就可以使用这种方式定义。
2. 定义多个常量
- 语法:可以使用括号将多个
const
组合在一起,例如:
const (
a = 1
b = 2
c = 3
)
这种方式也可以省略类型,多个常量可以是不同类型,只要各自赋值符合类型要求。例如:
const (
name = "John"
age = 30
isMale = true
)
- 适用场景:当有一组相关的常量,比如一个枚举类型的不同值,或者一组配置参数,使用这种方式可以使代码结构更清晰,便于管理。
3. iota
关键字在常量定义中的用法
- 语法:
iota
是一个在const
块中自动递增的计数器,从 0 开始,每新增一行常量声明,iota
就自动加 1。例如:
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
这里 Sunday
的值为 0,Monday
的值为 1,以此类推。
- 适用场景:
- 枚举类型:像表示一周的天数、月份等具有顺序关系且值为连续整数的枚举场景。
- 位掩码:例如文件权限,每个权限标志可以用
iota
来定义,通过位运算组合使用。例如:
const (
Read = 1 << iota
Write
Execute
)
这里 Read
为 1
,Write
为 2
(1 << 1
),Execute
为 4
(1 << 2
),可以通过位运算组合不同的权限,如 Read | Write
表示可读可写权限。