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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

裁员为什么会降本增笑?

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

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

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

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

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

Go HTTP GET 请求可以发送 body 吗

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

被 Go 团队打脸了,已接受的提案也能一句话推翻!!!

2023-10-17
阅读 2 分钟
608
大家好,我是煎鱼。还记得两个月前我分享过一篇《Go 将增加内置的零值标识符 zero!》文章。内容是关于 Go 将会增加一个新的预定义标识符 zero。具体有兴趣深入了解语法和规则的可以看上面那篇文章。它是一个无类型的零值,适用于数组和结构体类型。也解决了这两个类型在零值无法比较的问题。综合来看,有利有弊。划重点...

Go PGO 快速上手,性能可提高 2~4%!

2023-10-13
阅读 4 分钟
678
2023 年初,在 Go1.20,PGO 发布了预览版本。在本次 Go1.21 的新版本发布,修复了各种问题后,PGO 已经正式官宣生产可用。

Go 标准库想增加 metrics 指标,你支持吗?

2023-10-11
阅读 3 分钟
686
大家好,我是煎鱼。在 Go 的标准库中,有一个神奇的标准库 runtime/metrics,这个标准库提供了一系列预定义好的 Go 自身的相关指标。如果没有编写过基础监控库或者关注的比较少的朋友可能会没接触到这类指标。今天这篇文章是展开现有的 metrics 指标,并结合现有的社区讨论一起看看还有没有必要增加更多的标准库指标。快...

互联网公司裁员后管理岗的几个现象

2023-10-08
阅读 2 分钟
1.1k
今天是来自匿名用户Q 的授权投稿。前段时间在煎鱼这分享了《互联网公司裁员的预兆和手段》,总结了在互联网行业摸爬滚打数年载的一些血泪经验。许多朋友私下反馈很有帮助。今天这篇是关于互联网公司大裁员时,管理者会出现的几个现象。不同公司手段千奇百怪,但万变不离其宗。以下仅代表匿名用户Q 的个人观点。背景可能...

快速掌握 Go 工作区模式

2023-09-25
阅读 3 分钟
1.1k
在 Go 项目的模块管理中,先是 GOPATH,然后到废弃。再到强推 Go modules,从被社区抗拒到 rsc 硬上弓。现在最新要了解的,就是工作区模式(workspace mode)。这是一个在 Go1.18 引入的重要特性。

Go 官方新玩具:漏洞管理和扫描,看看自己项目有没有坑?

2023-09-18
阅读 5 分钟
1.4k
大家好,我是煎鱼。业务系统的安全问题一直是各企业的 “头号” 问题(被发现时)。不知道有多少读者朋友们经历了刚刚结束的 HW 行动。最近发现有厂商已经可以对 Go 开始做检测了,这又是一大进步。这不,最近发现 Go 官方自己推出了新的工具,作用是漏洞管理,告诉你已报告的漏洞,并告知你应该如何升级到什么版本。今天...

10 年了!Go 常量为什么只支持基本数据类型?

2023-09-13
阅读 3 分钟
1.7k
大家好,我是煎鱼。相信大家在接触 Go 这门编程语言时,就会学到常量这个知识点。各大编程语言会教你,常量是不可变变量的一种类型。只要定义了常量,你就可以安心的用他。不用担心值在哪里就被程序莫名奇妙的给改了。常量的使用例子如下例子: {代码...} 输出结果: {代码...} 你可能会发现一个奇怪的点。那就是例子里...