首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Go
江湖十年
创建于2023-07-03
订阅专栏
Go 语言的一些特性。
等 11 人订阅
共26篇文章
创建于2023-07-03
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Go 并发控制:sync.Cond 详解
在 Go 中因为 channel 的存在,`sync.Cond` 并发原语并不常用。不过在一些开源组件中还能能见到 `sync.Cond` 的应用,比如 Kubernetes 用它来实现并发等待队列,
Go 并发控制:sync.WaitGroup 详解
我们知道 errgroup 内部是使用 sync.WaitGroup 实现的,那么本文就更进一步,来探索下 `sync.WaitGroup` 源码是如何实现的。
Go 源码是如何解决测试代码循环依赖问题的?
公众号首发地址:https://mp.weixin.qq.com/s/j5vKNxl2keMF7oPT5M0XnA 最近我写了一篇讲解 context 包源码的文章《Go 并发控制:context 源
Go 并发控制:context 源码解读
context 是 Go 语言的特色设计之一,主要作用有两个:**控制链路**和**安全传值**,并且 context 是**并发安全**的。
在 Go 中如果获取 goroutine 的 id?
如果你使用过如 Python、Java 等主流支持并发的编程语言,那么通常都能够比较容易的获得进程和线程的 id。但是在 Go 语言,没有直接提供对多进程和多线程的支持,而是提供了 goroutine
Go 并发控制:singleflight 详解
`singleflight` 是 [Go 官方扩展库 x](https://pkg.go.dev/golang.org/x/sync) 中提供的扩展并发原语,能够将多个并发请求合并为一个,降低服务端压
Go 并发控制:sync.Once 详解
在 Go 语言的并发编程中,常常会遇到需要确保某个操作仅执行一次的场景。sync.Once 是 Go 标准库中的一个简单而强大的工具,专门用于解决这种需求。本文将深入解析 sync.Once 的使用方
Go 并发控制:errgroup 详解
errgroup 是 Go 官方库 x 中提供的一个非常实用的工具,用于并发执行多个 goroutine,并且方便的处理错误。 我们知道,Go 标准库中有个 sync.WaitGroup 可以用来并发
Go 语言中的 Defer、Panic、Recover 你都掌握了吗?
Go 语言中的错误处理不仅仅只有 if err != nil,defer、panic 和 recover 这三个相对来说不不如 if err != nil 有名气的控制流语句,也与错误处理息息相关。
源码解读:Go 最权威的错误处理包 pkg/errors 原来是这么实现的!
pkg/errors 包在 Go 错误处理生态中可谓大名鼎鼎了,截止目前在 GitHub 上有 8.2k 的 star 量。虽然不是 Go 官方包,但却被很多团队当作事实标准来使用。 本文就来深入到
Go 错误处理指北:Error vs Exception vs ErrNo
很多有其他编程语言经验的人初次接触 Go 语言时,想必对 if err != nil 的错误处理方式感到新奇,之后用久了,竟发现有点令人抓狂。 因为很多人不满 Go 语言的错误处理方式,甚至有人做了一
Builder 模式在 Go 语言中的应用
Builder 模式是一种创建型模式,即用来创建对象。 Builder 模式,中文翻译不太统一,有时候被翻译为建造者模式或构建者模式,有时候也被翻译为生成器模式。为了不给读者造成困扰,我还是直接叫它
适配器模式在 Go 语言中的应用
前段时间我负责对一个项目进行临时性的技术方案改造,用到了适配器模式,今天就来跟大家简单分享下适配器模式在 Go 语言中的应用。 适配器模式 适配器模式(Adapter Pattern)是 23 种经典
在 Go 中如何使用反射实现简易版 encoding/json
在使用 Go 语言开发过程中,我们经常需要实现结构体到 JSON 字符串的序列化(Marshalling)或 JSON 字符串到结构体的反序列化(Unmarshalling)操作。Go 为我们提供了
在 Go 中如何使用 go:embed 指令嵌入静态文件
有时候,将配置文件、模板甚至整个前端应用直接嵌入到 Go 二进制文件中,是一种提高应用部署效率和简化操作的有效方法。自从 Go 1.16 版本起,Go 语言官方引入了 //go:embed 指令,这使
Go 语言中的结构体内存对齐你了解吗?
这是一篇填坑文章,我在《Go 中空结构体惯用法,我帮你总结全了!》一文中提到了 Go 中空结构体对内存对齐的影响,并承诺近期会写一篇关于 Go 结构体内存对齐的文章。本文就来详述一下在 Go 中什么是
以 Go 语言为例解释什么是伪共享以及如何解决
在解释 伪共享(false sharing) 之前,有必要简要介绍一下 CPU 架构中缓存是如何工作的。 CPU 缓存中的最小单位是缓存行(cache line)(如今,CPU 中常见的缓存行大
在 Go 中如何检查结构体是否为空
本文概述了几种在 Go 中判断结构体是否为空的方法,适用于具有可比较字段和不可比较字段的结构体。Go 中的空结构体是指所有字段均设置为对应字段零值的结构体。
在 Go 中如何让结构体不可比较?
最近我在使用 Go 官方出品的结构化日志包 slog 时,看到 slog.Value 源码中有一个比较好玩的小 Tips,可以限制两个结构体之间的相等性比较,本文就来跟大家分享下。 在 Go 中结构体
Go 项目文件命名规范是什么?
在编程世界中,选择正确的命名约定是打开可读和可维护代码大门的重要途径。在使用 Go 语言开发大型项目时,文件命名是构建清晰项目结构的关键一环,一个合理的文件命名规范不仅能提高开发效率,还能降低团队协作
下一页