news 2026/10/9 2:52:48

Golang 基础01

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Golang 基础01
Weekday:以int为底层类型,眼熟【自定义类型 + iota】 的枚举写法 type 关键字,用于定义自定义类型或给已有类型取别名
type Weekday int

自定义类型,这里需注意:Weekday ≠ int 虽然存储的数据类型相同,但是Weekday与int之间的赋值必须显示转换。

const()可以批量定义常量

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

iota 是常量生成器,从0开始,每次累加。首个常量使用之后其余自动累加。同行内iota值相同

这里需要注意的是 Atoi和Itoa,他们相似但是作用不同,Atoi和Itoa是strconv里面的两个方法,用于把字符串和整形之间互相转化。Atoi:str-》int,Itoa:int-》str

func (d Weekday) String() string { // 值接收者方法: 等价于 func String(d Weekday) string names := [...]string{ // [...] 让编译器按元素个数推导数组长度(此处为 7) "周日", // 下标 0 "周一", // 下标 1 "周二", // 下标 2 "周三", // 下标 3 "周四", // 下标 4 "周五", // 下标 5 "周六", // 下标 6 } // 数组字面量结束 if d < Sunday || d > Saturday { // 边界检查, 避免下标越界导致 panic return fmt.Sprintf("Weekday(%d)", int(d)) // %d 需要整型实参, 所以显式转换 } // if 结束 return names[d] // 整数类型可直接作数组下标; 返回元素的副本 } // 方法结束

该函数属于Weekday类型的专属函数,任何Weekday类型的常量以及变量都可以调用该函数

函数的具体作用就是根据变量或常量的值来进行判断,输出日期或者其他信息

使用场景:订单状态,待支付、已支付、已发货、已完成、已取消

由于1.26版本的go依旧没有枚举,所以使用上面的自定类型+iota来进行。接下来是订单状态的完整示例

type OrderStatus int const ( OrderPending OrderStatus = iota OrderPaid OrderShipped OrderCompleted OrderCancelled ) func (o OrderStatus) String() string { Status := [...]string{"Pending", "Paid", "Shipped", "Completed", "Cancelled"} if o < OrderPending || o > OrderCompleted { return "数据越界" } return Status[o] } func main() { order1 := OrderPending fmt.Println(order1.String()) }

第二个例子,权限控制的例子

type UserPermission int const ( CanRead UserPermission = 1 << iota CanWrite CanExecute ) func (u UserPermission) OutputPermission() { permissions := [...]struct { permission UserPermission name string }{ {CanRead, "CanRead"}, {CanWrite, "CanWrite"}, {CanExecute, "CanExecute"}, } for _, p := range permissions { if p.permission&u == p.permission { fmt.Println("Can ", p.name) } else { fmt.Println("Can not ", p.name) } } } func main() { user1 := CanRead | CanWrite user1.OutputPermission() }

位运算 与或非 & | ^ 左移<< 右移>>

左值右值结果
&100
010
000
111
|101
011
000
111
^10
01
<<公式:a<<n
a左移n位,a*2^n
>>公式:a>>n
a右移n位a/2^n
右移自动去掉小数位
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 2:52:25

别让浮板、背漂、鼻夹变成“永久拐杖”

浮板、背漂、鼻夹是学游泳的常见辅助工具&#xff0c;合理使用能帮助新手克服怕水、分解动作。但如果长期离不开&#xff0c;就可能从“帮手”变成“拐杖”&#xff0c;影响真正的水感和自救能力。是否使用、何时撤除&#xff0c;最好听从专业教练安排。一、过度依赖的常见表现…

作者头像 李华
网站建设 2026/10/9 2:52:25

彭大帅的AI运维助手实战案例 2 · 网站 502,把报错截图丢给 AI

多模态看图不是噱头&#xff0c;是排障提速的实招 —— 系列第 2 篇 —— 2026 年 10 月 目 录 一、现场&#xff1a;白天&#xff0c;网站 502 了 二、多模态&#xff1a;把截图丢给 AI 三、从截图到根因&#xff1a;AI 的只读排查链 四、修复与加固&#xff1a;一次确认的重…

作者头像 李华
网站建设 2026/10/9 2:51:21

前端工程师必看:收藏!2026年AI大模型落地,如何从页面开发者跃迁AI应用架构师?

2026年AI大模型已渗透产业&#xff0c;前端工程师可利用自身技能优势转型AI应用开发。文章指出前端无需深耕算法&#xff0c;只需掌握交互、模型调用和全栈思维&#xff0c;即可实现技能跃迁。核心优势包括交互体验、技术栈适配和全栈思维。转型需避开盲学算法、只学工具不实战…

作者头像 李华
网站建设 2026/10/9 2:51:20

分布式存储系统设计实战:从分片到故障恢复的完整指南

接手分布式存储系统设计之前&#xff0c;我一直觉得这是大公司才配考虑的事。直到某次业务里&#xff0c;单库数据量过了几个 TB&#xff0c;备份恢复要一整夜&#xff0c;大促期间主库一抖动全链路跟着抖&#xff0c;才意识到分布式存储不是选修课&#xff0c;而是业务长大的必…

作者头像 李华
网站建设 2026/10/9 2:51:03

C#实现类Lua编译器:轻量、可调试、工业级嵌入方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华