- 导读:你每天都在用 const,但你可能从未真正“认识”它。为什么 const a = 1 + 2i 不需要声明类型?为什么它能算出比宇宙原子数还大的整数而不溢出?今天,我们来揭开 Go 类型系统中这个最被低估的“隐形特权”。 1. 一个让新手困惑的“身份危机”在 Go 里,定义变量像办身份证,必须严丝合缝:var age int = 18 // 必须声明是 intvar pric... 导读:你每天都在用 const,但你可能从未真正“认识”它。为什么 const a = 1 + 2i 不需要声明类型?为什么它能算出比宇宙原子数还大的整数而不溢出?今天,我们来揭开 Go 类型系统中这个最被低估的“隐形特权”。 1. 一个让新手困惑的“身份危机”在 Go 里,定义变量像办身份证,必须严丝合缝:var age int = 18 // 必须声明是 intvar pric...
- 🔍 错误信息解读最近开发go项目,下载goland进行开发,但是却经常遇到goland会报这样的错:CreateProcess error=4551, 应用程序控制策略已阻止此文件生活化比喻:你的程序 = 快递员Windows 安全策略 = 小区门卫门卫:"没工牌、没登记,不准进!" 🚫错误原因:GoLand 编译的 .exe 文件被标记为"来自互联网"Windows SmartScr... 🔍 错误信息解读最近开发go项目,下载goland进行开发,但是却经常遇到goland会报这样的错:CreateProcess error=4551, 应用程序控制策略已阻止此文件生活化比喻:你的程序 = 快递员Windows 安全策略 = 小区门卫门卫:"没工牌、没登记,不准进!" 🚫错误原因:GoLand 编译的 .exe 文件被标记为"来自互联网"Windows SmartScr...
- 很多人刚接触 Go 时,会本能地把 Java 的设计模式(GoF 23 种)套进去,结果写出一堆复杂的结构体 + 接口 + 工厂,结果发现:**Go 里很多经典模式要么简化了,要么干脆不需要了**。为什么?因为 Go 是**静态类型 + 编译期决定一切**的语言,它缺少 Java 的“动态特性”(如运行时反射、继承、动态代理等),但也正是这些缺失,让 Go 避免了很多“为了绕弯子而发明”的... 很多人刚接触 Go 时,会本能地把 Java 的设计模式(GoF 23 种)套进去,结果写出一堆复杂的结构体 + 接口 + 工厂,结果发现:**Go 里很多经典模式要么简化了,要么干脆不需要了**。为什么?因为 Go 是**静态类型 + 编译期决定一切**的语言,它缺少 Java 的“动态特性”(如运行时反射、继承、动态代理等),但也正是这些缺失,让 Go 避免了很多“为了绕弯子而发明”的...
- “不是我不走,是 omitempty 根本看不见我……” —— 一个委屈的 time.Time{}在Go 1.24 中,就悄悄塞给我们一个新 struct tag:omitzero。它就像 JSON 序列化的“扫地机器人”,专扫那些 名义上是零值、实际上不该出现 的字段灰尘——比你妈还严格,连墙角都不放过🧹。来,咱们今天就一起扒一扒这位“零值终结者”的底细。 🎬 场景一:time.Tim... “不是我不走,是 omitempty 根本看不见我……” —— 一个委屈的 time.Time{}在Go 1.24 中,就悄悄塞给我们一个新 struct tag:omitzero。它就像 JSON 序列化的“扫地机器人”,专扫那些 名义上是零值、实际上不该出现 的字段灰尘——比你妈还严格,连墙角都不放过🧹。来,咱们今天就一起扒一扒这位“零值终结者”的底细。 🎬 场景一:time.Tim...
- MCP(Model Context Protocol)是 Anthropic 推出的一种标准化协议,用于让 AI 模型(如 Copilot Agent)安全、高效地调用外部工具和服务。通过 MCP,你可以将数据库查询、API 调用、文件操作等能力暴露给 AI,使其具备“行动力”。今日,随着MCP官方发布了Go SDK,AI的风终于吹到的go。本文将带你从零开始,使用官方 [mcp Go SD... MCP(Model Context Protocol)是 Anthropic 推出的一种标准化协议,用于让 AI 模型(如 Copilot Agent)安全、高效地调用外部工具和服务。通过 MCP,你可以将数据库查询、API 调用、文件操作等能力暴露给 AI,使其具备“行动力”。今日,随着MCP官方发布了Go SDK,AI的风终于吹到的go。本文将带你从零开始,使用官方 [mcp Go SD...
- Gin 是 Go 语言中最受欢迎的 Web 框架之一,以其高性能、简洁 API 和强大中间件生态著称。2025 年发布的 Gin v1.11.0 在保持轻量核心的同时,带来了多项重要更新,涵盖 HTTP/3 实验支持、表单绑定增强、上下文类型扩展、性能优化与安全加固 等方面。下面就烂看看gin v1.11的新特性。 1️⃣ 🚀 实验性支持 HTTP/3(基于 quic-go)PR #321... Gin 是 Go 语言中最受欢迎的 Web 框架之一,以其高性能、简洁 API 和强大中间件生态著称。2025 年发布的 Gin v1.11.0 在保持轻量核心的同时,带来了多项重要更新,涵盖 HTTP/3 实验支持、表单绑定增强、上下文类型扩展、性能优化与安全加固 等方面。下面就烂看看gin v1.11的新特性。 1️⃣ 🚀 实验性支持 HTTP/3(基于 quic-go)PR #321...
- 🔧 什么是 Redis Pipeline?Pipeline(管道)是 Redis 提供的一种批量命令执行机制:客户端将多个命令一次性发送给 Redis,Redis 顺序执行并批量返回结果,减少网络往返(RTT)开销。⚠️ 注意:Pipeline ≠ 事务(MULTI/EXEC)!Pipeline:无原子性保证,仅优化网络;多个命令可能部分成功Transaction:保证原子性(但不支持回... 🔧 什么是 Redis Pipeline?Pipeline(管道)是 Redis 提供的一种批量命令执行机制:客户端将多个命令一次性发送给 Redis,Redis 顺序执行并批量返回结果,减少网络往返(RTT)开销。⚠️ 注意:Pipeline ≠ 事务(MULTI/EXEC)!Pipeline:无原子性保证,仅优化网络;多个命令可能部分成功Transaction:保证原子性(但不支持回...
- 初学 Go 时,我们常写这样的函数:func add(a int, b int) int { return a + b}但真实项目中,函数远不止“传参返值”这么简单。今天分享 3 个高频实用的进阶技巧——让函数更灵活、更安全、更专业 👇 1️⃣ 技巧一:变长参数(Variadic Functions)✅ 场景:日志打印、求和、批量操作 🌰 传统写法(硬编码参数个数)func sum... 初学 Go 时,我们常写这样的函数:func add(a int, b int) int { return a + b}但真实项目中,函数远不止“传参返值”这么简单。今天分享 3 个高频实用的进阶技巧——让函数更灵活、更安全、更专业 👇 1️⃣ 技巧一:变长参数(Variadic Functions)✅ 场景:日志打印、求和、批量操作 🌰 传统写法(硬编码参数个数)func sum...
- 一、背景:传统 errors.As 的痛点Go 从 1.13 起引入了 errors.As(err, target) 来支持「错误链中的类型匹配」,解决了「如何判断一个 error 是否包装了某类特定错误」的问题。但其使用方式存在明显短板:// 传统写法:冗长、易错、作用域污染var pathErr *fs.PathErrorif errors.As(err, &pathErr) { ... 一、背景:传统 errors.As 的痛点Go 从 1.13 起引入了 errors.As(err, target) 来支持「错误链中的类型匹配」,解决了「如何判断一个 error 是否包装了某类特定错误」的问题。但其使用方式存在明显短板:// 传统写法:冗长、易错、作用域污染var pathErr *fs.PathErrorif errors.As(err, &pathErr) { ...
- 🚪 场景还原:你租了一套房房子 = 进程的内存空间客厅 = 堆(heap)抽屉 = 栈(stack)你 = 程序现在问题来了:谁来决定「一个茶杯能不能扔」?语言决策者风格你的心态Go🏠 房东(GC)“我定期来收垃圾,你安心喝茶”😌 放心摸鱼,偶尔被停顿吓一跳Rust🧹 管家(编译器)“茶杯只能有 1 个主人,借出要登记,还回来才能扔”😅 写代码像填表格,但运行时稳如老狗 🐹 G... 🚪 场景还原:你租了一套房房子 = 进程的内存空间客厅 = 堆(heap)抽屉 = 栈(stack)你 = 程序现在问题来了:谁来决定「一个茶杯能不能扔」?语言决策者风格你的心态Go🏠 房东(GC)“我定期来收垃圾,你安心喝茶”😌 放心摸鱼,偶尔被停顿吓一跳Rust🧹 管家(编译器)“茶杯只能有 1 个主人,借出要登记,还回来才能扔”😅 写代码像填表格,但运行时稳如老狗 🐹 G...
- 场景还原:小明刚学 Java,兴冲冲写了个 Dog 类,再继承出 Husky 并 override bark() 方法:class Husky extends Dog { @Override void bark() { System.out.println("嗷呜~拆家时间到!"); }}他转头用 Go 实现,敲下:type Husky struct { Dog }func (h Husk... 场景还原:小明刚学 Java,兴冲冲写了个 Dog 类,再继承出 Husky 并 override bark() 方法:class Husky extends Dog { @Override void bark() { System.out.println("嗷呜~拆家时间到!"); }}他转头用 Go 实现,敲下:type Husky struct { Dog }func (h Husk...
- “我赋值 nil,却被告知:你非空。”—— 某位凌晨三点 debug 的 Go 工程师真言你写过这样的代码吗?var b *bytes.Buffervar r io.Reader = bif r == nil { fmt.Println("✅ 安全")} else { fmt.Println("❌ 危险!")}// 输出:❌ 危险!🤯 ???b 是 nil,r = b,结果 r... “我赋值 nil,却被告知:你非空。”—— 某位凌晨三点 debug 的 Go 工程师真言你写过这样的代码吗?var b *bytes.Buffervar r io.Reader = bif r == nil { fmt.Println("✅ 安全")} else { fmt.Println("❌ 危险!")}// 输出:❌ 危险!🤯 ???b 是 nil,r = b,结果 r...
- 🔍 一、老问题:高性能 vs 可控性,鱼与熊掌不可兼得?在 Go 1.26 之前,我们只有两个选择:方法示例优点缺点net.DialTCP(...)net.DialTCP("tcp", nil, addr)✅ 零解析开销:• 跳过 DNS 解析• 跳过协议分发❌ 不支持 context.Context→ 无法超时/取消,服务不可用时会卡死dialer.DialContext(ctx, "... 🔍 一、老问题:高性能 vs 可控性,鱼与熊掌不可兼得?在 Go 1.26 之前,我们只有两个选择:方法示例优点缺点net.DialTCP(...)net.DialTCP("tcp", nil, addr)✅ 零解析开销:• 跳过 DNS 解析• 跳过协议分发❌ 不支持 context.Context→ 无法超时/取消,服务不可用时会卡死dialer.DialContext(ctx, "...
- “Go 看似简单,但魔鬼藏在细节里。”Go 以“简洁、明确、可预测”著称,但即使是经验丰富的开发者,也可能在某些边界场景中踩坑。本文从 Harrison Cramer 的经典文章出发,精选 8 个易被忽视却极具实战价值的 Go 语言细节,帮助你写出更健壮、更地道的 Go 代码。 1. 直接遍历整数(Go 1.22+)从 Go 1.22 起,range 支持直接遍历整数,无需再写 for i ... “Go 看似简单,但魔鬼藏在细节里。”Go 以“简洁、明确、可预测”著称,但即使是经验丰富的开发者,也可能在某些边界场景中踩坑。本文从 Harrison Cramer 的经典文章出发,精选 8 个易被忽视却极具实战价值的 Go 语言细节,帮助你写出更健壮、更地道的 Go 代码。 1. 直接遍历整数(Go 1.22+)从 Go 1.22 起,range 支持直接遍历整数,无需再写 for i ...
- “调试的难度是写代码的两倍。所以,如果你写代码时用尽了聪明才智,那你怎么 debug?”—— Brian W. Kernighan(简称 BK,debug 界的鲁迅) 一、Bug 的三大门派:复制型、薛定谔型、并发型在 Go 世界,bug 分三类,像武侠小说里的门派:Bug 类型门派名特点应对姿势可复现型少林派一拳打过去,它必倒log.Printf + DelveHeisenbug武当派你一... “调试的难度是写代码的两倍。所以,如果你写代码时用尽了聪明才智,那你怎么 debug?”—— Brian W. Kernighan(简称 BK,debug 界的鲁迅) 一、Bug 的三大门派:复制型、薛定谔型、并发型在 Go 世界,bug 分三类,像武侠小说里的门派:Bug 类型门派名特点应对姿势可复现型少林派一拳打过去,它必倒log.Printf + DelveHeisenbug武当派你一...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签