golang

北冥you鱼1 小时前
开发语言·后端·golang
Go语言四则运算实战:从基础类型到big包的深度解析在Go语言开发中,四则运算是最基础也是最常用的操作之一。然而,Go语言在数值运算方面有着独特的设计哲学:基本类型支持直接运算符操作,而大数运算则需要通过big包的方法调用。这种设计既保证了简单场景的便捷性,又为高精度计算提供了可靠支持。
Wang's Blog10 小时前
开发语言·微服务·golang
Go-Zero 项目开发47:自研微服务框架的必要性与核心结构设计在微服务开发领域,Go 语言生态已经涌现出大量成熟框架,如 go-zero、go-micro、kratos、tarsgo、dubbo-go 等。这些框架各有侧重,有的绑定特定公司基础设施,有的追求极简与高性能。即便如此,仍有许多团队选择自研微服务框架。这并非重复造轮子,而是基于对技术深度、业务定制和长期演进的综合考量。本文将结合实际项目经验,从需求出发,探讨自研框架的价值,并以 go-zero@latest 的设计哲学为参考,设计一款微服务框架的核心目录结构,并给出可运行的代码骨架。
名字还没想好☜16 小时前
开发语言·后端·golang·go
Go 用 bufio.Scanner 读大文件踩坑:默认 64KB 行上限、Buffer 扩容与按 Token 切分用 Go 逐行读文件,几乎所有人第一反应都是 bufio.Scanner,写法也确实优雅:小文件跑得好好的,直到某天你的程序读一个日志文件突然「读一半就停了」,还不报 panic。你以为文件读完了,其实是撞上了 bufio.Scanner 一个藏得很深的默认限制:单行超过 64KB 它就悄悄停下,而且默认吞掉错误。这篇我们把这个坑和相关的用法讲透。
techdashen17 小时前
开发语言·后端·golang
Go设计取舍之六: sync.Mutex正常模式与饥饿模式2023 年 6 月 3 日,在 golang-nuts 询问了 sync.Mutex 源码注释中的 waiter 和饥饿模式。Ian Lance Taylor 参与回复,共有 6 封邮件。完整讨论:Can we further optimize the scheduling order of goroutines in sync.Mutex?。
立心者01 天前
开发语言·笔记·golang
Golang基础笔记十五之sync在并发编程的世界里,Golang 的 goroutine 像一群不知疲倦的小精灵,各自独立地执行任务。但当多个 goroutine 同时访问共享资源时,就会引发数据竞争(data race),就像一群人同时抢一个麦克风,场面就会失控。今天我们要聊的 sync 包,就是 Golang 官方提供的“秩序维护者”,它帮我们优雅地解决并发协作问题。### 为什么需要 sync?先看一个反面教材。假设我们要统计一段文本中单词的总数,用多个 goroutine 分别统计不同段落,最后汇总。如果直接用一个共享变量累加,
北冥you鱼1 天前
java·python·golang
Go语言数组越界处理机制详解:从编译时检查到运行时panic在Go语言中,数组是一种固定长度、连续内存的数据结构,其长度在声明时就已经确定,无法在运行时改变。这种设计带来了性能优势,但也引入了一个关键问题:数组越界访问。
FfHUCisI1 天前
贪心算法·golang·代理模式
Golang - 贪心算法 — 局部最优推导全局最优贪心算法的名字听起来像是"贪得无厌",但它其实是一种相当务实的策略:在每一步都选择当前看起来最好的选项,然后寄希望于这一系列局部最优选择最终拼出一个全局最优解。
xcLeigh2 天前
java·开发语言·golang
Go入门:变量声明的五种方式详解大家好,我是你们的Go语言向导。前面十篇文章我们完成了Go语言的入门准备——环境搭建、设计哲学、工具链、注释规范、命名规则、包系统、文件结构和main包。从今天开始,我们正式进入Go语法的学习。第一个要掌握的知识点就是变量声明。
Achou.Wang3 天前
开发语言·python·golang
深入理解go语言-第6章 接口与面向组合设计“If it walks like a duck and quacks like a duck, it’s a duck.” —— Duck Typing
techdashen2 天前
开发语言·后端·golang
Go设计取舍之三: 0.3ns每次的错误Benchmark2023 年 11 月 27 日, golang-nuts 分享了一组 Go 1.21 与 Go 1.22 的 benchmark,想确认 string 和 []byte 转换是否获得了新的零分配优化。共有 9 封邮件。原始讨论:It seems that go 1.22 has optimized…。
techdashen2 天前
开发语言·后端·golang
Go设计取舍之四: map不变时能否并发修改不同value2026 年 7 月 28 日,golang-nuts 上出现了一个很典型的问题:map 已经提前填好,之后不再增删 key,多条 goroutine 分别更新不同 key 对应的 value,是否安全?线程共有 10 封邮件,Ian Lance Taylor 参与回复。原始讨论:Concurrent Access to Map Values?。
名字还没想好☜2 天前
golang·单元测试·log4j·go·testing
Go 表驱动测试实战:用 t.Run 子测试组织可维护的单元测试你给一个函数写单测,第一版是复制粘贴:测输入 A 断言一段,测输入 B 再抄一遍断言,测边界值又抄一遍。三个用例还好,等长到十几个,某天函数签名改了,你得挨个改十几段几乎一样的代码。更糟的是,一个断言 t.Fatal 挂掉,后面的用例根本没跑,你不知道到底错了几个。Go 社区的标准答案是表驱动测试:把用例做成一张表,循环跑,配合 t.Run 拆成独立子测试。这篇手把手带你从「复制粘贴」重构到「一张表搞定」。
golang学习记2 天前
golang·claude code
Claude Code写哪种变成语言最快?最近,一个名为 mame/ai-coding-lang-bench 的基准测试在开发者社区引起了不小的讨论。这个测试的设定很有意思:让 Claude Code 用 13 种不同的编程语言,分别实现一个简化版的 Git 系统。每种语言测试 20 次,总共跑了 600 次。结果揭示了一些反直觉的规律,也让我重新思考了 Go 在 AI 辅助开发时代的定位。
ShuiShenHuoLe2 天前
开发语言·golang·html
Go html/template 使用入门用 html/template 把 HTML 文件 + Go 数据 → 渲染成完整 HTML,并自动防 XSS。
Achou.Wang2 天前
大数据·算法·golang
深入理解go语言-第5章 并发编程——Go的灵魂“Don’t communicate by sharing memory; share memory by communicating.” —— Go proverb
呐抹倾3 天前
笔记·学习·golang
go学习笔记:panic是什么含义各位小伙伴,今天我们来聊一个在Go语言里既让人“闻风丧胆”又不得不掌握的概念——panic。很多初学者一看到程序崩溃,就以为是panic的锅,但其实panic只是“报告问题”的机制,真正的“锅”往往是我们自己代码的逻辑漏洞。今天我就用大白话,结合代码示例,带大家彻底搞懂panic的含义、触发时机以及如何优雅地处理它。### 什么是panic?——程序眼中的“紧急刹车”想象一下你正在开车,突然前面出现一个横穿马路的行人,你本能地猛踩刹车,同时按喇叭提醒周围。panic就像这个“急刹车”——当程序遇到无法继续
不在逃避q3 天前
redis·笔记·golang
Golang笔记之Redis大家好,我是你们的老朋友,一个喜欢折腾技术的博主。今天咱们来聊聊Go语言和Redis这对黄金搭档。Redis作为一款高性能的内存数据库,在缓存、队列、分布式锁等场景下几乎是标配。而Go语言凭借其高并发、简洁的语法,天然适合与Redis配合使用。这篇文章我会从零开始,带你用Golang操作Redis,包括安装、连接、基本操作和几个实用场景,全程代码示例,保证你能跟着跑起来。### 为什么是Go + Redis?先废话两句。Redis是单线程模型,但它速度极快,因为基于内存操作。而Go的goroutine可以
名字还没想好☜3 天前
java·数据库·golang·go·goroutine
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势你写了一个经典的「干活 or 超时」循环,跑一段时间发现内存慢慢涨、GC 越来越频繁,pprof 一看全是 time.Timer 对象堆着不释放。代码看着人畜无害:
ttwuai3 天前
前端·golang
GoFrame 后台日志清空失败:无 WHERE 删除为什么被拦住GoFrame 后台里“清空全部日志”不要直接写成无条件 Delete。ORM 拦住无 WHERE 删除,通常是在防误删,不是框架莫名其妙。正确做法是把“清空全部”当成一个显式后台动作:接口先挂权限码,后端使用专门的清理逻辑或明确安全条件,执行前后读取日志数量和分页 total,再把操作者、时间、影响行数写进审计日志。
进击的程序猿~3 天前
开发语言·面试·golang
Go 并发底层原理面试学习指南Goroutine是Go语言中的轻量级线程,由Go运行时调度。核心特点:Channel是Goroutine之间通信的管道,基于CSP模型。