答应我,这次一定彻底搞懂 Go 中的类型别名

大家好,我是站长 polarisxu。 有下面 3 行代码: // 32 位机器 1)var x int32 = 32.0 2)var y int = x 3)var z rune = x 它们是否能编译通过?为什么? 如果面试时问这道题,你需要想想面试官想考察你什么。在往下看之前,建议你记下自己的答案。 01 数字字面量 在 Go 语言中,字面量是无类型(untyped)的。无类型是什么意思?无类型意味着可以赋值给类似类型的变量或常量。用上面例

【灵魂拷问】为什么假期回老家,计划总是泡汤?

大家好,我是站长 polarisxu。 今天这个话题,我相信很多人都深有体会。清明假期又结束了,我的计划也如往常一样泡汤了!但这次,我想复盘一下,为什么会这样?! 先讲讲我之前的一些经历。 01 学生时代 学生时代,大学和大学之前还是有些不一样的。 高三之前,每次放假回家,除了老师布置的作业,其他计划的学习计划基本泡汤,书怎么带回去的就怎么带回来,每次内心都充满“罪恶感”,

那些想替代 C 的语言怎么样?Go、Rust、C++ 和 Zig 生产力对比

C 已经快 50 岁了。对于一瓶葡萄酒来说,这个年龄很棒,但对于快速发展的行业中的编程语言而言,它就不同了。在过去的十年中,出现了许多具有不同风格的新语言,所有这些语言都试图在某种程度上成为 C 语言的替代者。 当一种新语言或多或少变得流行时 —— 开发人员开始编写基准测试,以展示该语言编写的软件性能,CPU 利用率和内存使用量以及二进制文件的大小等等。 在这里,我想在不同的层面

我无语了,Go 中 +-*/ 四个运算符竟然可以连着用

大家好,我是站长 polarisxu。 我计划把类似这样的文章归为:奇淫技巧,你认同吗? 看到 Go101(玩 twtter 的可以关注他) 发了一条消息,+-*/ 这四个竟然可以连着写: package main func main() { v := new(int) *v = 2 println(5/+-*v) } 我看到后,试着运行了一下,竟然输出了 -2 。。。我忍不住“卧槽”。。。 我不得不说,Go101 扣的真细节。 于是我尝试着找一些线索,看看为什么可以这样写。 01 直接看汇编 遇到一些不解的

Go周刊题解:切片的另类初始化 — 该题正确率出奇的低

大家好,我是站长 polarisxu。 我在 Go 语言爱好者周刊第 87 和 88 期 刊首出了两道题,这两道题有点类似,都是和切片初始化有关。但这两道的题正确率比较低,特别是 88 期的题。 第 87 期题目如下: package main import ( "fmt" ) func main() { a := []int{2: 1} fmt.Println(a) } 正确答案是:C,正确率 52%。这道题相对简单,但依然有近一半的人答错了。 第 88 期题目和 87 期类似,但难度高一些,题目如下: package main func main() { var x = []int{4: 44, 55, 66, 1: 77, 88} println(len(x),

GoLand 也可以远程开发了:试用报告

大家好,我是站长 polarisxu。 JetBrains 官方今天发了一篇文章:《使用 Projector 远程访问 IDE》 ,了解到 JetBrains 搞了一个远程开发 IDE。很多人知道 VSCode 可以进行远程开发,现在 JetBrains 系列 IDE 也支持了(自然 GoLand 也支持),于是安装试用了下,给大家做一个汇报。 01 Projector 是什么 Projector 是一种远程运行和访问 Swing GUI 应用程序的技术(Swing 是 Java 的 GUI API,JetBrains 系列 IDE 都是使用 Swing 绘制的 UI),目前 1.0 版本可

送 gRPC 书后续:自我反思和人性的思考

大家好,我是站长 polarisxu。 上周在公众号搞了一个送书活动 ,感谢大家的参与,留言数 170+,而微信公众号最多只能放出来 100 个留言,因此有些晚留言的,可能留言没放出来,下次再有活动,大家可以早点参与,我公众号发文时间一般是 18:12。 根据文中的相关规则,第二天就开奖了,中奖的用户一一留言回复了,他们的书也已经收到了。 不过陆续还有人问:这个开奖了吗?据说还有

阿里云盘公测随想:如何看待竞争

大家好,我是站长 polarisxu。 昨天(2021 年 3 月 22 日)阿里云盘公测,声称下载速度 50-100 M/s,网友测试,5G 下确实能达到。而且官方表示,“无论免费收费,未来都不限速”。 朋友圈有人发了这么一段话: 阿里云盘今天公测,下载速度 50-100 MB/s,官方表示:“无论免费收费,未来都不限速” 百度网盘目前用户数已超 7 亿,阿里云盘目前用户数不足千万 阿里云平台目前有 2800+ 的 CDN 节点,全

发现 go version 的一个另类用法:你肯定想不到

大家好,我是站长 polarisxu。 对于 go version,大家应该不陌生。在很多入门教程,安装 Go 后,一般会建议执行 go version 看看是否安装成功;亦或遇到问题,别人会问你 Go 哪个版本,你也会通过 go version 命令查看。所以,go version 的一个作用是查看本地使用的 Go 版本。 但实际上,go version 还有其他用途,甚至可以说,输出本地 Go 版本号只是它功能的一个特例。先 go help version 看看: $ go help version usage: go version [-m] [-v] [file ...] Version

map 和 switch 如何选?match 又是什么?

大家好,我是站长 polarisxu。 看到标题别惊讶,虽然 map 和 switch 似乎没啥关系,但有些场景它们俩都可以用。 场景一:根据不同的错误码显示对应错误消息,比如 200 -> 正常。 场景二:根据不同状态显示对应的文案。这个场景很常见,比如数据库保存状态,用的 tinyint 类型,显示给用户的是文本,所以需要进行转换。 具体怎么选?我们看一下代码,怎么选择应该一目了然。 const ( UnPay = iota HadPay Delivery Finish ) var orderState = map[int]string{ UnPay: &