如果 Go 语言加入箭头函数,你怎么看?

围绕“Go 是否该加入箭头函数”,社区争论的焦点并不只是语法长短,而是可读性、一致性和语言哲学的取舍。本文结合提案示例、反对理由与现有替代手段,梳理这场讨论真正影响开发体验的关键点。

如果 Go 语言加入箭头函数,你怎么看?

Go 语言 time 包怎么用?时间格式化与时间戳转换详解

本文按实际开发里的高频场景,重新梳理 Go 语言 `time` 包的核心用法:当前时间获取、时间戳互转、`Duration` 间隔计算,以及格式化与解析。重点保留示例代码和关键 API,并把容易混淆的模板规则、时区处理方式讲清楚,方便直接上手。

Go 语言 time 包怎么用?时间格式化与时间戳转换详解

Go 里的编译时断言,究竟能帮你提前拦下什么问题?

Go 没有专门的“编译时断言”关键字,但开发中依然可以借助常量、数组、接口赋值和 unsafe.Sizeof 等语言特性,把一部分错误拦在编译阶段。本文按常见问题拆解几种实用写法,并说明它们各自适合解决什么问题。

Go 里的编译时断言,究竟能帮你提前拦下什么问题?

面试题:Go 语言中 string(65) 输出的为什么不是 65?

`string(65)` 为什么打印出的是 `A`,而不是字符串 `65`?这道常见 Go 面试题考的并不是记忆,而是对字符、`rune`、字符串转换语义的理解。文章会拆开 `string(int)` 的真实含义,并给出把整数转成数字字符串的正确写法与排错提示。

面试题:Go 语言中 string(65) 输出的为什么不是 65?

Go 只有值传递,为什么切片和指针又像“引用传递”?

Go 并不存在“按引用传参”这一独立机制,函数参数一律按值复制。真正容易让人误判的是切片、map、channel 这类值里本身带有底层数据的引用信息,以及指针参数带来的可修改效果。 很多刚接触 Go 的开发者,都会在“值传递”和“引用传递”上卡一会儿:为什么传入 int 改不动原值,传入 slice 却像是能改到外面?

Go 只有值传递,为什么切片和指针又像“引用传递”?

Go 语言中避免循环依赖的最佳实践

Go 的 `import cycle not allowed` 不只是编译报错,更是在提醒包结构已经出现反向耦合。本文从定位方法、五种常见解法到日常预防原则三部分展开,帮助你判断该合并包、抽接口、提公共层,还是改用依赖注入与函数传参。

Go 语言中避免循环依赖的最佳实践