go test 如何禁用缓存?

大家好,我是 polarisxu。 每次执行单元测试,如果代码没有任何变动(包括可能读取的配置文件),则后续的执行,会直接读取缓存中的测试结果,同时会有一个 cached 标记。 $ go test -run ^TestPrint$ test/hello ok test/hello 0.113s $ go test -run ^TestPrint$ test/hello ok test/hello (cached) 有时候可能希望能执行实际的测试,比如看日志输出,想要禁用缓存,怎么办? 碰到这样的问题,你一般会怎么获得答案? 本文介绍几种方法,对你解决其他问题可能也会有帮助。 1、查

Go1.18 快讯:constraints 包被移除标准库

大家好,我是 polarisxu。 Go1.18 已经发布 Beta2 版本了,正式版本预计 3 月份发布。Go1.18 最重要的特性莫过于泛型,之前写过几篇相关文章: Go泛型系列:提前掌握Go泛型的基本使用 Go泛型系列:Go1.18 类型约束那些事 Go 泛型入门教程 其中提到一个标准库新包:constraints,相关提案见:https://github.com/golang/go/issues/

跟着 Go 作者学泛型

大家好,我是 polarisxu。 在 GopherCon 2021 年大会上,Go 两位作者 Robert Griesemer 和 Ian Lance Taylor 做了泛型相关的演讲,即将在 Go1.18 发布的 Go 泛型,正是两位设计的。一直想着把他们的演讲做一个梳理,然后分享给大家。拖的有点久,趁春节假期整理出来了。 注意,本文中的 constraints 包,已经确定在 Go1.18 正式版中去除,放入 golang.org/x/exp 中。详细可以参考该文:Go1.18 这个包确定没了 。 Go1.18 关于泛型部分,主要有三个特性: Type parameters for functions and ty

「2022 版」轻松搞定 Go 开发环境

大家好,我是 polarisxu。 实话说,这个时候还写这么基础的文章,感觉有点太 low?但几乎每天有人开始学习 Go,那自然绕不开搭建 Go 开发环境。很多人会通过搜索网上的教程来照着做,于是发现搞不定,原因是找到的教程大部分比较老旧,都是基于 GOPATH 的。隔段时间我就会看到有人问类似的问题,所以才决定写一篇 2022 版 Go 开发环境搭建。 提醒一句,入门教程涉及到代码放入 src 目录下的,基本

鹅厂小哥用行动反对加班:程序员加班能被终结吗?

大家好,我是 polarisxu。 今天不少人应该看到了一个网传文件,其中详细记录了事情经过,有截图、聊天记录以及当事人的分析思考。不得不说,这位小哥很有气魄。 背景大致是,鹅厂目前从上到下都在倡导少加班,但效果似乎不理想。这应该也很好理解,长年形成的加班文化,岂是说改就能改的。 经历过职场的,大家都有过这样的经历:自己想按时下班,但别人都没走,你一个人走,心理压力

Go 为什么选择 Gopher 作为吉祥物?

大家好,我是 polarisxu。 Go 语言的诞生,伴随着出现了 Gopher。现在 Go 爱好者通常自称为 Gopher。实际上,Gopher 最开始只是表示 Go 的吉祥物: 那 Gopher 这个吉祥物前世今生为何?据说,有些人学 Go 是因为 Gopher 这个吉祥物~ 大约在 1999 年(远早于 Go 的诞生日)—— gopher 第一次出现在新泽西州的 WFMU radio station ,作为广播电台的宣传物。当时,Renée French 被委托为年度筹款活动设计一件 T 恤,结

本地如何配置多个 GitHub/Gitee 账号?

大家好,我是 polarisxu。 现在的开发,无论是日常工作还是参与开源,都离不开 Git。开源项目,大家通常使用 GitHub 或 Gitee,而工作中通常会自建 Git 服务,比如通过 GitLab、Gogs 等搭建。 为了方便使用,一般大家会配置 SSH keys,通过 ssh 协议 pull/push 仓库。 1、生成 ssh 密钥 首先,我们需要生成 ssh 密钥:(基于 mac,linux 类似,Windows 下找对应工具) ssh-keygen -C "polaris@studygolang.com" Generating public/private rsa key

为 Java 开发者准备的 Go 教程 02:Java 有而 Go 无

大家好,我是 polarisxu。 Go 语言的设计是站在巨人的肩膀上的,它吸取了其他语言的优秀设计,同时摒弃了一些「不认可」的设计。同时,为了保持简单性,Go 的特性也比很多其他语言少。因此,Java 有一些特性,Go 没有。但没有,不代表不好。本文就看看具体有哪些。(当然,也存在 Go 有的特性,而 Java 没有) 1、多重赋值 Java 可以在一条语句中将同一个值分配给多个变量(很多 C 族语言

GitHub 发现了 studygolang 项目依赖的漏洞

大家好,我是 polarisxu。 今天打开 studygolang 项目的 GitHub 仓库主页,发现了一个醒目的提示: 即发现了潜在的安全漏洞。 之所以 GitHub 能够发现这个安全漏洞,前提是我之前进行了授权。之前我写过一篇文章:《重磅!GitHub 为 Go 社区带来安全支持》 ,没看过的可以看看。 查看 「Dependabot alerts」,发现是 tidwall/gjson 有漏洞: 点击可以查看该漏洞的详细信息: 所以,修复该问题很简单,在 studygolang 项

Typora 宣布收费后,这款开源 Markdown 编辑器火了

大家好,我是 polarisxu。 这几年,Markdown 写作不要太流行,包括一些社区也基本支持 Markdown 格式,包括 Go 语言中文网。GitHub 的评论也是支持 Markdown 格式,因此 Markdown 是每个程序员都应该掌握的。如果你从来没有使用过 Markdown,现在是时候尝试使用了。 Markdown 是一种纯文本格式,用来撰写结构化文档。由 John Gruber 在 2004 年创造。他用 perl 实现了第一个 Markdown 到 HTML 的转换器,迅速地在网络上普及开来