MST

星途 面试题库

面试题:Go语言中如何定义一个常量组并阐述其特点

请用Go语言代码示例定义一个包含多个常量的常量组,说明常量组中未明确赋值的常量是如何取值的,以及常量组在实际编程中的常见应用场景。
38.5万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

// 定义包含多个常量的常量组
const (
    Monday = iota
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
)

func main() {
    fmt.Println(Monday)
    fmt.Println(Tuesday)
    fmt.Println(Wednesday)
    fmt.Println(Thursday)
    fmt.Println(Friday)
    fmt.Println(Saturday)
    fmt.Println(Sunday)
}

在上述代码中,iota 是一个特殊的常量生成器,在常量组中,它从0开始,每新增一行,其值自动加1。对于未明确赋值的常量,如 TuesdaySunday,它们的值依次为1到6,因为它们隐式地使用了 iota 生成的值。

常量组在实际编程中的常见应用场景:

  1. 状态码定义:在处理网络请求、系统状态等场景中,定义一组常量来表示不同的状态。例如HTTP状态码:
const (
    StatusOK        = 200
    StatusBadRequest = 400
    StatusNotFound  = 404
    StatusInternalServerError = 500
)
  1. 枚举类型:在Go语言中没有传统的枚举类型,通过常量组可以模拟枚举,如上面代码中的一周七天。
  2. 权限控制:在系统权限管理中,可以定义不同的权限常量,组合使用来表示不同的权限集合。
const (
    ReadPermission = 1 << iota
    WritePermission
    ExecutePermission
)

这里通过位运算来表示不同权限的组合,例如 ReadPermission | WritePermission 表示同时有读和写的权限。