Go开源项目推荐:500行代码确认请求时间花在哪

大家好,我是 polarisxu。 工作中遇到请求慢,难免想要查看时间都花在哪里了。办法肯定有不少,比如浏览器带的工具等。不过今天我要推荐一个命令行工具,目的有两个: 安装、使用方便,可以清晰的看出时间花在哪里了,建议放入自己的常用工具箱; Go 语言实现的,500 行左右代码,可以作为新手项目学习、练习、实战; 项目名称:httpstat,作者是 davecheney 大神。项目地址:http

一道关于 len 函数的诡异 Go 面试题解析

大家好,我是 polarisxu。 在 Go语言爱好者周刊第 104 期有一道题目,以下代码输出什么: package main func main() { var x *struct { s [][32]byte } println(len(x.s[99])) } 答题结果如下: 正确率只有 16%。 本文就讲解下为什么结果是 32。 01 解析题目 先剖析下这段代码,x 变量: var x *struct { s [][32]byte } 注意这里不是定义一个结构体类型,而是定义一个结构体类型指针变量,即 x 是一个指针,指针类型是一个匿名结构体。很显然,x 的值是 nil,因

厉害了我的 Go:推荐系统都有开源实现

大家好,我是 polarisxu。 看到一个项目:https://gorse.io/,这是一个用 Go 编写的开源推荐系统。Gorse 的目标是成为一个通用的开源推荐系统,可以迅速地引入到各种各样的在线服务中。通过将项目、用户和交互数据导入 Gorse,系统将自动训练模型,为每个用户生成推荐。 这个项目代码托管在 GitHub 上:https://github.com/zhenghaoz

Go1.17 新特性:新版构建约束

大家好,我是 polarisxu。 Go 1.17 下个月就要正式发布了。很多人要问泛型了吧,泛型已经很明确了,Go1.18 会有。今天给大家介绍 Go1.17 的一个新特性:构建约束 — Build Constraints。 确切来说,这个特性相关的工作在 1.16 时就加入,但处于过度阶段,1.17 在各方面都更完善,更完整的支持,是时候了解它了。 01 什么是构建约束 构建约束(build constraint),也叫做

这个工具真好:看看你的Go项目依赖有无漏洞

大家好,我是 polarisxu。 发现了一个好工具,推荐给大家! https://deps.dev/,这是 Google 新出的一个实验性工具,命名为:Open Source Insights,它能让你更了解你的项目依赖。 通过这个网站,你可以查询任意开源项目的依赖情况,还包括依赖的依赖,可以看到完整的依赖关系图,而且可以看到它们的许可证。 目前该工具支持 Go Modules、NPM package

网友很强大,发现了Go并发下载的Bug

大家好,我是 polarisxu。 前几天我写了一篇文章:Go项目实战:一步步构建一个并发文件下载器 ,有小伙伴评论问,请求 https://studygolang.com/dl/golang/go1.16.5.src.tar.gz 为什么没有返回 Accept-Ranges。在写那篇文章时,我也试了,确实没有返回,因此我以为它不支持。 但有一个小伙伴很认真,他改用 GET 方法请求这个地址,结果却有 Accept-Ranges,于是就很困惑,问我什么原因。经过一顿操作猛如虎,终于知

Rust 劝退系列 09:函数

大家好,我是站长 polarisxu。 这是 Rust 劝退系列的第 9 个教程,探讨 Rust 中的函数。 Rust 是支持函数式编程的语言。Rust 中,函数作为一等公民,本身就是一种类型。函数类型变量可以作为其他函数的参数或返回值,也可以赋值给别的变量,还可以直接调用执行。 01 函数定义 在 Rust 中,函数使用 fn 关键字定义(Go 中使用 func,想着够省略了,没想到 Rust 来个更省略!)。 和大部分其他语言的语法

Go项目实战:一步步构建一个并发文件下载器

大家好,我是 polarisxu。 今天为大家带来一个实战项目。建议你一定要动手实践。 在往下看之前,你不妨思考下,用 Go 如何实现一个并发下载器。(我之前有推荐过一个类似的开源项目:推荐三个Go实战开源项目 ) 01 原理 对于服务器上的某个文件,我们要并发下载到本地,很容易想到,应该将文件分成多个部分,然后开多个 goroutine 并发地去下载,最后将这多个部分合并成一个文件,实现并发下载的

这本 Go 新书挺期待的:100 个常见错误

大家好,我是 polarisxu。 Go 虽然简单,但一样会有很多容易犯的错误。网上也有不少总结的 Go 常见错误。 Teiva Harsanyi 在 2019 年发表过一篇文章:《The Top 10 Most Common Mistakes I’ve Seen in Go Projects》 (这里有中文版:https://tomotoes.com/blog/the-top-10-most-common-mistakes-ive-seen-in-go-projects/)

Go 启用新的官方问答社区

大家好,我是 polarisxu。 Go 官方宣布,在 StackOverflow 上启用新的问答社区,而这之前,官方的主要在 Google Groups。先简单介绍下 StackOverflow 的 Collective 。 01 Collective 是什么? 我们知道 StackOverflow 是一个问答社区,针对某一个类问题,一般通过 Tag 的形式汇集,比如 Go 语言的:https://stackoverflow.com/questions/tagged/go。而 Collective 是 StackOverflow 推出的,专门用于为你喜欢的技术构建一个社区