Go 如何应对来自软件依赖的恶意攻击?

4 月 19 日
阅读 3 分钟
36
这一连串事件,不禁让我思考到 Go 是如何解决和防护攻击相关的问题。周末翻到了《How Go Mitigates Supply Chain Attacks》,基于此整理和调整后分享给大家。

Go 新提案:返回值应该明确使用或忽略?

4 月 16 日
阅读 3 分钟
106
之前在写 Go 代码时 IDE 经常会提示,团队内 CodeReview 也会遇到一些方法的返回值,处理不处理的问题。一开始大家还会讨论一下,久而久之基本也就麻木了。

Go 标准库的一个设计败笔:哨兵错误

4 月 11 日
阅读 3 分钟
351
大家好,我是煎鱼。在 Go 的历史发展中,总是有或多或少的坑。最近遇到一个跟错误类型定义和声明使用有关的小坑。翻了一圈 Go 社区里的争论,发现又是一个暂时无法解决的未解之坑。今天分享给大家,平时开发时也可以给自己避避坑。快速背景在 Go 里有一种错误类型的定义,官方叫做哨兵错误(Sentinel errors):哨兵错误...

Go 哪里没有做好?Rob Pike 深刻反思了

4 月 8 日
阅读 3 分钟
152
从历史背景来看,在 Go 诞生的那个年代,并发编程是一个比较新颖的理念。许多其他编程语言、论文甚至书籍都写过关于并发编程的内容。并发编程还没有成为主流思想。

Go 负责人 rsc 翻车,决定追加 godebug 行

3 月 27 日
阅读 3 分钟
393
上年我给大家分享过《加大力度!Go 将会增强 Go1 向后兼容性》,当时是 Go 核心团队负责人 @Russ Cox(下称:rsc)主导和推进的。

Go 团队近两年在做什么,AI 方面如何发力?

3 月 21 日
阅读 2 分钟
362
大家好,我是煎鱼。本文继续承接 @Sameer Ajmani 的回忆录《Go 和 Google、Cloud 融合的那么深,绝非偶然》,他现在作为 Google 工程总监 ,负责领导 Go 编程语言团队。本次也给出了 Go 这两年大的关键变动说明,更重要的是提及了 Go 计划在生成式 AI 方面的发力方向。今天由煎鱼结合分享一下,看看未来会发生什么变化。...

Go 错误处理:用 select-case 来解决这个难题?

3 月 14 日
阅读 2 分钟
208
日常看 Go 社区的一些新动态,发现大家对于错误处理的新提案是很积极。上次分享了一篇想要用 switch-case 来解决现状的新提案,不少同学认为不可行。

Go arena 民间库来了,可以手动管理内存!

3 月 12 日
阅读 4 分钟
279
上年我们有讨论过关于 Go arena 手动管理内存的相关提案。一开始还高歌猛进,但没想到后面由于严重的 API 问题(想把 arena 应用到其他的标准库中,但会引入大问题):

Go deadcode:查找没意义的死代码,对于维护项目挺有用!

2 月 22 日
阅读 3 分钟
1k
还记得我前两年在深圳参加了个技术大会,其中一个议题是携程的一个大佬分享他在日常工作中,发现一大堆过时的无意义代码和逻辑,导致大家工作较为繁琐且较为辛苦的情况。

Go 更强的代码洁癖,可以把 gofmt 给换了!

2 月 21 日
阅读 4 分钟
909
我们从一开始写 Go 代码和应用,就会被各种官方和民间教程,甚至 IDE 教导我们必须配一个 Gofmt 工具。他能够格式化 Go 程序的代码。会使用制表符表示缩进,空白表示对齐。

Go1.22 正式发布!包含语言变化、性能提高、标准库变动等重要特性

2 月 9 日
阅读 2 分钟
2.2k
大家好,我是煎鱼。今天 Go1.22 正式发布了!一早起来,还没出门就赶紧整理了本篇文章给大家。一起学习新版本!之前我还看进度预测 2 月中发布。没想到直接打脸。Go 核心团队成功赶在春节前发布了!真是有点猛。Go 1.22 新版本安装方式:Go1.22 包含多项重要的新功能和改进。以下是部分显著变化;完整列表请查看《Go 1.2...

Go1.22 新特性:性能提高、Trace 大修、工作区支持 vendor 等

2 月 4 日
阅读 2 分钟
555
Go 1.22 是能在 macOS 10.15 Catalina 上运行的最后一个版本。Go 1.23 需要 macOS 11 Big Sur 或更高版本。

Go1.22 新特性:终于增强 http.ServerMux 路由能力,将有更强的表现力!

1 月 24 日
阅读 3 分钟
898
Go1.22 有一个比较重要的新特性,那就是基于提案《net/http: enhanced ServeMux routing》,增强了 http.ServerMux 的路由匹配能力。非常值得大家学习和关注。

Go1.22 新特性:新的 math/rand/v2 库,更快更规范了!

1 月 18 日
阅读 3 分钟
565
大家好,我是煎鱼。Go 首个标准准库的 v2 版本,来自 math/rand/v2 库。将在 Go1.22 正式发布和对外生产可用。本次由 Go 核心团队负责人 @Russ Cox 推动和发起。变动原因选择 math/rand 库做第一个 v2 标准库变动的原因如下:标准库里的 math/rand 的老毛病和待提高的地方太多了。例如:过时的生成器、缓慢的算法(性能...

Go1.22 新特性:Slices 变更 Concat、Delete、Insert 等函数,对开发挺有帮助!

1 月 17 日
阅读 4 分钟
599
大家好,我是煎鱼。在 Go1.22 这个新版本起,切片(Slices)新增和变更了一些行为。对于开发者相对更友好了一点。新增 Concat 函数在以前的 Go 版本中,有一个很常见的使用场景,如果我们想要拼接两个切片。必须要手写类似如下的代码: {代码...} 输出结果: {代码...} 如果在 Go 工程中常用到,大家还会在类似 util 包...

Go1.22 新特性:for 循环不再共享循环变量,且支持整数范围

1 月 9 日
阅读 2 分钟
692
又过了好几个月,到了 Go 新版本的日子了。Go 1.22 预计将于 2024 年 2 月发布。我将会给大家带来一系列的新版本特性讲解和分享。

Uber Go 出了个静态分析工具 NilAway,还挺实用!

1 月 4 日
阅读 2 分钟
378
大家好,我是煎鱼。风水轮流转,Go 程序写多了。总是会这有点问题,那有点问题。问题积累久了就容易出点事件,甚至是事故。这种时候大家往往会想着引入一些静态分析工具来解决这个问题。NilAway 分析工具最近 Uber 开发和开源了一个挺不错的静态分析工具 NilAway:使用场景是:在 Go 程序编译时就能捕获 nil,达到帮助开...

新提案:Go panic 能不能加 PanicError?

2023-12-28
阅读 3 分钟
445
大家好,我是煎鱼。在我们学习和平时使用 Go 时,一定会涉及到一个内置函数 panic: {代码...} 调用该函数后会停止代码的控制流程并开始恐慌,达到扭转当前程序控制流的目的。在使用上也常常和 defer 和 recover 关联上。快速 Demo以下是一个简单的使用 Demo: {代码...} 输出结果: {代码...} 看着都没什么问题。输出结...

Go Context 到底放第一个参数传,还是放结构体里?

2023-12-22
阅读 3 分钟
540
大家好,我是煎鱼。前段时间我们在聊手动管理内存 arena 的后续时。我们有提到 context 的函数传参等问题。当时在评论区有许多的小伙伴交流了起来,大家对此还是非常关注的:今天我们就来聊一聊 conetxt 传参的这个事。到底摆哪?Go 官方推荐是什么?快速介绍上下文(Context)是 Go 语言中非常有特色的一个特性,其主要...

裁员为什么会降本增笑?

2023-12-21
阅读 2 分钟
714
大家好,我是煎鱼。最近互联网公司放烟花的次数有些高,基本都扎堆 Q3~Q4 出现各类事件/事故。吃瓜都快跟不上了。作为互联网民工,为什么裁员后会导致降本增笑呢?今天我们一起来聊聊。各种事故烟花现阶段各大厂都领上号了,阿里先崩,再到滴滴,接着腾讯。涉及到产品至少有:阿里:访问密钥服务 AK 异常,引发阿里系多...

Go errors 默认加堆栈信息,有用不?

2023-12-07
阅读 2 分钟
367
大家好,我是煎鱼。在 Go 语言中,错误处理是我们必须涉及和争议比较大的一个功能特性。今天我们不太探讨 if err != nil 的繁杂忧愁。聚焦在 errors 标准库在排查、定位问题的诉求上。看看大家平时都是怎么做的。背景平时我们在返回和处理错误时,一般使用 errors 标准库。其支持以下几个 API: {代码...} 最简单的 Demo...

为什么最近听说 Go 岗位很少很难?

2023-12-05
阅读 2 分钟
597
其实这个话题已经躺在我的 TODO 里很久了,近来很多社区的小伙伴都私下来交流,也有在朋友圈看吐槽 Go 上海的大会没什么人。还不如 Rust 大会,比较尴尬。

Go HTTP GET 请求可以发送 body 吗

2023-11-27
阅读 2 分钟
455
前段时间遇到一个朋友,他跟我说他们在开发一个 Go 项目时,遇到了一个争议点,说来也好理解。WEB UI 端选择 GET、POST 类型时,程序是否要区分所传递的值(例如:Body),还是不管是什么类型都传。

刷到一个比较骚的 Go 错误处理新提案。。。

2023-11-20
阅读 2 分钟
472
今天在 GitHub 上学习时,看到 Go 社区里有人提了个错误处理的优化提案《proposal: Go 2: Error-Handling Paradigm with !err Grammar Sugar》,也是引入新的语法来解决该问题。

最新进展:Go arena 手动管理内存,鸽了!

2023-11-14
阅读 2 分钟
244
年初有给大家分享 Go1.20 arena 能手动管理内存的事情,当时不论是我们读者,还是社区上的小伙伴们,都是比较激动的。毕竟这是一个有意思的特性。

Go 透明文件夹的特性,有没有必要加?

2023-11-07
阅读 2 分钟
261
大家好,我是煎鱼。在 Go 语言中,我们一般会用模块(Module)和包(Package)来组织我们的项目、库的目录和代码结构。今天给大家分享一个面向包这块的新提案,看看是否合适加进 Go 特性中?前置知识:模块和包具体来讲,模块(Module)就是 go mod 的应用。我们最常接触到的是以下命令: {代码...} 在执行了 go mod ini...

Go etcd 的依赖问题终于解决了。。。

2023-11-02
阅读 4 分钟
301
前几年非常高频的接触到这一堆微服务相关组件:grpc + grpc-gateway + etcd + protobuf + protoc-gen-go,一开始都是相安无事,逐步跟进新版本。

给 Go 提问题?充分了解 Go 提案流程

2023-10-30
阅读 4 分钟
259
大家好,我是煎鱼。前段时间分享了《被 Go 团队打脸了,已接受的提案也能一句话推翻!!!》引发了大家对 Go 的大范围讨论。但后面发现一个问题,似乎行业内从未给大家讲解过 Go 变更语言规范和提案流程。今天这篇文章将给大家分享,也可以借此学习社区的运作模式。前言在官方资料《Proposing Changes to Go》中,给出了...

Go 周刊一览#1:1.22 增强 ServeMux 路由、新版本发布、新开源包等

2023-10-23
阅读 3 分钟
299
软件行业日新月异,新的更新迭代层出不穷,Go 生态圈里也有许许多多的变化。为此我们将每周基于 Golang Weekly 进行最新的资讯和内容精选同步。

Go 项目标准布局?Go 官方出指南了

2023-10-20
阅读 5 分钟
793
本文分两个部分:第一个部分是近期 Go 官网输出的 "Organizing a Go module" 的资料,具有官方指导意义。第二个部分社区的 golang-standards,存在了相当长的时间,较为知名。