Rust 劝退系列 04:基本数据类型

大家好,我是站长 polarisxu。 这是 Rust 劝退系列的第 4 个教程,探讨 Rust 中的基本数据类型,或叫标量类型(scalar type)。 Rust 和 Go 一样,都是静态类型语言,这表示每个变量的类型必须明确。和 Go 类似,大多数情况下,Rust 编译器能够推断出某个值的类型,不需要我们显示指定,写起来有点类似于弱类型似语言。但有些情况下,必须明确告知编译器我们使用什么类型,在 Rust 中,这叫

我的 Go 语言书单

大家好,我是站长 polarisxu。 今天是 4 月 23 日,是世界读书日。当当有很大的优惠,而且我还要到了额外的优惠码,花 140 可以买到 400 块钱的书。借这个机会,我分享一份 Go 语言书单(实际上还有很多免费电子书单,但这里只说纸质版),需要的可以今天购买,超便宜! 我认为不错的书,不代表你也认为好。所以,买不买自行判断哈。 01 入门级 以下排名不分先后。 Go 程序设计语言(俗称 Go 圣经) 本

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)的。无类型是什么意思?无类型意味着可以赋值给类似类型的变量或常量。用上面例