通过一个例子让你彻底掌握 Go 工作区模式

大家好,我是 polarisxu。 早在 Go1.18 快要发布时,我就试用了工作区(workspace)模式,并写了一篇介绍文章:Go1.18 快讯:Module 工作区模式 。 然而,Go1.18 正式发布后,工作区模式有点变化,导致那篇文章的部分内容不试用了,于是今天重新补一篇,因为工作区模式真的很有用。 工作区模式(Workspace mode),可不是之前 GOPATH 时代的 Workspac

这道题正确率竟然只有 22%

大家好,我是 polarisxu。 《Go 语言爱好者周刊》 第 148 期有一道题目:以下代码输出什么? package main import ( "fmt" ) func main() { m := [...]int{ 'a': 1, 'b': 2, 'c': 3, } m['a'] = 3 fmt.Println(len(m)) } A:3;B:4;C:100;D:编译失败 大家的答题情况如下: 正确率只有 22%(正确答案是 C)。不知道你选对了吗? 核心知识点 这道题目的核心点在于对 rune 字面量的理解和数组的语法。 在 Go 语言规范中有这么一句话: A rune literal represents a rune constant , an integer value

Go 开源项目推荐:一个简单的 Go 练手项目

大家好,我是 polarisxu。 Go 语言中文网微信群时不时有人问,有没有练手项目推荐。实话说,公众号陆续推荐过不少,但大家更擅长及时问,而不是找找。今天看到一个开源项目,值得学习了 Go 语言,但没有实战过的人练练手。 项目地址:https://github.com/cloudlena/s3manager,这是一个 Web 项目,通过 Web GUI 管理 S3 buckets。你可以基于这个项

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