面试题答案
一键面试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。对于未明确赋值的常量,如 Tuesday
到 Sunday
,它们的值依次为1到6,因为它们隐式地使用了 iota
生成的值。
常量组在实际编程中的常见应用场景:
- 状态码定义:在处理网络请求、系统状态等场景中,定义一组常量来表示不同的状态。例如HTTP状态码:
const (
StatusOK = 200
StatusBadRequest = 400
StatusNotFound = 404
StatusInternalServerError = 500
)
- 枚举类型:在Go语言中没有传统的枚举类型,通过常量组可以模拟枚举,如上面代码中的一周七天。
- 权限控制:在系统权限管理中,可以定义不同的权限常量,组合使用来表示不同的权限集合。
const (
ReadPermission = 1 << iota
WritePermission
ExecutePermission
)
这里通过位运算来表示不同权限的组合,例如 ReadPermission | WritePermission
表示同时有读和写的权限。