面试官让你手写 iota 定义一周七天,你会写几种?

技术百科 舞夢輝影 发布时间:2026-01-17 浏览:
手写 iota 定义一周七天有3种常见写法:基础版从0开始自动递增(Sunday=0);偏移版加1使Sunday=1;增强版添加String()方法实现友好字符串输出,推荐实际使用。

手写 iota 定义一周七天,核心是利用 Go 语言中 iota 的自增特性,配合枚举习惯和可读性需求。常见写法有 3 种,区别在于是否显式赋值、是否添加别名、是否支持字符串化。

基础版:纯 iota + 常量名直译

最简洁直接的写法,适合快速表达枚举逻辑:

type Weekday int

const (
	Sunday Weekday = iota
	Monday
	Tuesday
	Wednesday
	Thursday
	Friday
	Saturday
)

说明:从 0 开始自动递增,Sunday=0Saturday=6。语义清晰,符合 Go 标准库(如 time.Weekday)惯例。

偏移版:iota + 偏移量(让 Sunday = 1)

若业务要求周日为第 1 天(而非第 0 天),

可加偏移:

type Weekday int

const (
	Sunday Weekday = iota + 1
	Monday
	Tuesday
	Wednesday
	Thursday
	Friday
	Saturday
)

说明:iota 仍从 0 起,但首项加 1,结果为 Sunday=1Saturday=7。注意后续常量仍按顺序递增,无需重复写 +1

增强版:带 String() 方法 + 显式字符串映射

让类型支持打印友好输出,提升调试与日志可读性:

type Weekday int

const (
	Sunday Weekday = iota
	Monday
	Tuesday
	Wednesday
	Thursday
	Friday
	Saturday
)

func (w Weekday) String() string {
	names := []string{
		"Sunday",
		"Monday",
		"Tuesday",
		"Wednesday",
		"Thursday",
		"Friday",
		"Saturday",
	}
	if w < 0 || int(w) >= len(names) {
		return "Weekday(?)"
	}
	return names[w]
}

说明:实现了 fmt.Stringer 接口,调用 fmt.Println(Sunday) 会输出 "Sunday" 而非 0。数组索引与 iota 值严格对齐,安全且高效。

不复杂但容易忽略细节:iota 只在 const 块内重置;每行一个常量最稳妥;String() 方法建议加越界检查。实际项目中,第三种最实用。


# 实现了  # 周日  # 而非  # 只在  # go  # String  # int  # 区别  # 标准库  # 字符串  # 接口  # const  # 常量  # 第三种  # 性需求  # 增强版  # iota  # 偏移量  # 仍按 


相关栏目: <?muma $count = M('archives')->where(['typeid'=>$field['id']])->count(); ?> 【 AI推广<?muma echo $count; ?> 】 <?muma $count = M('archives')->where(['typeid'=>$field['id']])->count(); ?> 【 SEO优化<?muma echo $count; ?> 】 <?muma $count = M('archives')->where(['typeid'=>$field['id']])->count(); ?> 【 技术百科<?muma echo $count; ?> 】 <?muma $count = M('archives')->where(['typeid'=>$field['id']])->count(); ?> 【 谷歌推广<?muma echo $count; ?> 】 <?muma $count = M('archives')->where(['typeid'=>$field['id']])->count(); ?> 【 百度推广<?muma echo $count; ?> 】 <?muma $count = M('archives')->where(['typeid'=>$field['id']])->count(); ?> 【 网络营销<?muma echo $count; ?> 】 <?muma $count = M('archives')->where(['typeid'=>$field['id']])->count(); ?> 【 案例网站<?muma echo $count; ?> 】 <?muma $count = M('archives')->where(['typeid'=>$field['id']])->count(); ?> 【 精选文章<?muma echo $count; ?>

相关推荐

在线咨询

点击这里给我发消息QQ客服

在线咨询

免费通话

24h咨询:4006964355


如您有问题,可以咨询我们的24H咨询电话!

免费通话

微信扫一扫

微信联系
返回顶部