Rust 劝退系列 03:变量

大家好,我是站长 polarisxu。 这是 Rust 劝退系列的第 3 个教程,探讨 Rust 中的变量。 01 变量和绑定 变量指定了某存储单元(Memory Location)的名称,该存储单元会存储特定类型的值。 Rust 是静态类型语言,不能在运行期改变变量类型。 和你熟悉的大部分编程语言不一样,Rust 中变量一般不叫声明,而叫做绑定(这是从函数式语言中借鉴的,使用关键字 let 绑定),那有什么区别呢?

我又来推荐免费 Go 新书了:一本用 Go 讲架构的书

大家好,我是站长 polarisxu。 我又来给大家推荐 Go 新书了,免费的哦。说明一点,这本书我只是浏览了下目录,看了下介绍,感觉应该还可以,值得读一读。书名是:《Go With The Domain》。 先介绍下该书的作者。Miłosz 和 Robert,他们是 Three Dots Labs 的创始人,这是一个什么组织呢?官网上是这么介绍的: Golang, Domain-Driven Design and Continuous Delivery. 关注 Go 领域驱动设计和持续交付,所以,这本书也是和这方面有

注释竟然还有特殊用途?一文解惑 //go:linkname 指令

大家好,我是站长 polarisxu。 我之前写过一篇文章:为什么 Go 标准库中有些函数只有签名,没有函数体? ,其中有一点就是 //go:linkname 这个指令。 Go 中类似的指令挺多的,比如 Go1.16 中的 //go:embed。前些天有人问我,为什么它用 //go:embed 不起作用?我一看,它是这么写的:// go:embed,不知道你看到问题了没有?是的,指令是通过注释的方式,但有三点要求,要特别注意: // 后不能有空格。

这个功能,公众号、微信群会不会被玩坏?

大家好,我是站长 polarisxu。 微信生态近期又有一些不错的变更,体验上有较大改进,我把看到的一些列举下。 01 公众号留言支持盖楼 什么意思?最开始,微信公众号的留言,作者回复后,留言者没法接着原来的留言盖楼,必须另起一个留言,前段时间做了改进。不过还存在这样一个问题:比如一楼问了一个问题,其他读者想回复他,没法直接回复,经常见到这样的:回复一楼。然而,微信留言

一道 Go 闭包题,面试官说原来自己答错了:面别人也涨知识

大家好,我是站长 polarisxu。 通常,JS 面试,闭包应该是必考的题目。随着越来越多的语言对函数式范式的支持,闭包问题经常出现。在 Go 语言中也是如此。 本文从一道题引出 Go 中的闭包。这是 Go 语言爱好者周刊第 90 期的一道题目。以下代码输出什么? package main import "fmt" func app() func(string) string { t := "Hi" c := func(b string) string { t = t + " " + b return t } return c } func main() { a := app() b := app() a("go") fmt.Println(b("All")) } 这道题目答对的人蛮多的:60%。不管你

Rust 劝退系列 02:第一个 Rust 程序

大家好,我是站长 polarisxu。 上节我们准备好了 Rust 环境,现在开始我们的第一个 Rust 程序。 01 Hello World 在终端执行如下命令,创建相关目录结构: $ mkdir ~/rust-learning $ cd ~/rust-learning $ mkdir hello $ cd hello 启动 VSCode,在 Welcome 页面选择打开文件夹:~/rust-learning,在 hello 目录下创建 main.rs 文件,输入如下代码: 细心的读者可能看到了 fn 下面的三个点,鼠标放上去提示: file not included in module tree rust-analyzer(unlinked-file) 这个提示的详细说明见链接:h

Rust 劝退系列 01:打造开发环境

大家好,我是站长 polarisxu。 今天起正式 Rust “劝退”之旅。我也是在学习中,大家一起探讨交流,看谁先被劝退。在这个系列教程中,我通过和 Go 对比学习,同时只讲 Rust 最常用的特性,尽量避免入门就劝退。 工欲善其事必先利其器!本文我们先打造一个 Rust 的开发环境。 01 安装 Rust 打开 Rust 官网:https://rust-lang.org,可以切换到简体中文界面。在顶部菜单有「安装」。 对于

答应我,这次一定彻底搞懂 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 利用率和内存使用量以及二进制文件的大小等等。 在这里,我想在不同的层面