Go语言中最小的东西

2024-12-09

本文介绍了Go语言中iota的用法。iota常用于枚举值,可以自动递增赋值,方便维护常量列表。iota也可以用于创建位掩码,通过左移运算符生成递增的2的幂次方值,用于检查二进制数中的特定位是否被设置。

阅读更多
未分类 iota

一个可能终结职业生涯的错误

2024-11-24

这篇文章探讨了程序员职业生涯规划的重要性。作者指出,许多程序员并不知道自己想要什么,往往在职业生涯后期才意识到方向错误。文章将职业目标大致分为高级个人贡献者、管理者和独立工作者三种,并分别分析了各自的特点和实现路径。作者鼓励程序员尽早思考职业规划,积极掌控技能发展,并根据目标调整方向,即便计划不如预期,规划本身也能帮助我们更好地把握机会。

阅读更多
未分类

Go语言中的约束

2024-11-17

本文是Go泛型系列教程的第四部分,主要讲解了Go泛型中的约束。约束限定了类型参数的范围,可以是基本接口(仅包含方法元素)或类型集(直接指定允许的类型)。类型集可以使用联合(|)扩展允许的类型范围,也可以使用交集(多行接口元素)限制类型范围。文章还介绍了类型逼近(~),它允许使用底层类型相同的派生类型,以及如何在约束中使用接口字面量和引用类型参数。文章通过示例和练习,深入浅出地讲解了Go泛型约束的使用方法和一些限制,例如无法访问结构体字段,以及类型集不能用作变量或参数类型。

阅读更多
未分类 约束

编写包,而非程序

2024-11-15

本文强调了在Go语言编程中,编写可导入包的重要性,而非仅仅编写一次性程序。包是代码复用的基础,也是构建强大程序的关键。作者提倡以包为导向的设计思想,即先设计解决通用问题的包,再将其应用于特定问题。文章以一个简单的“hello world”程序为例,演示了如何将其重构为可导入的包,并介绍了如何通过测试驱动开发来指导包的设计和实现。

阅读更多
未分类

Go语言中的函数式编程

2024-11-08

本文介绍了如何在Go语言中实现函数式编程的三个核心操作:Map、Filter和Reduce。Map用于将函数应用于切片的每个元素并返回新的切片;Filter根据提供的函数过滤切片元素;Reduce将切片元素组合成单个值。文章通过示例代码演示了如何使用泛型和函数字面量实现这些操作,并解释了如何使用约束来确保类型安全。

阅读更多
未分类

如果你需要钱,就不要接受这份工作

2024-11-03

本文是作者“可怕的职业生涯”系列文章的第四篇,探讨了独立开发者/创作者的收入问题。作者认为固定价格合同对双方都不利,建议按小时收费,并给客户一个实际工时估算。作者强调了建立长期客户关系的重要性,并建议咨询师要价高一些,认为价格越高,客户越重视你的建议。作者还指出,有时客户需要先体验不采纳建议的痛苦,才会真正接受你的建议。

阅读更多
未分类 咨询

测试遗留代码:套件坏味道

2024-10-28

本文探讨了在面对遗留代码时如何进行测试。作者指出,缺乏测试、测试不足以及测试效率低下是常见问题。对于没有测试的代码,建议采用“测试你所接触的”策略,逐步添加测试。对于难以测试的代码,可以考虑重构或采用“先写测试”的方法。文章强调,测试是提高代码质量和开发效率的重要手段,应根据实际情况选择合适的测试策略。

阅读更多
未分类 遗留代码