MST

星途 面试题库

面试题:Go语言中常量定义的多种方式及适用场景

在Go语言中,请阐述常量定义使用const关键字的不同方式,比如定义单个常量、多个常量,以及iota关键字在常量定义中的用法,并说明每种方式一般适用于什么样的场景。
42.5万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

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
)

这里 Read1Write21 << 1),Execute41 << 2),可以通过位运算组合不同的权限,如 Read | Write 表示可读可写权限。