Go 1.26 标签归档 - 永夜 https://www.shuijingwanwq.com/tag/go-1-26/ 没有不值得去解决的问题,也没有不值得去学习的技术! Wed, 29 Jul 2026 10:31:14 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.1.2 https://media.shuijingwanwq.com/2026/05/logo-150x150.png Go 1.26 标签归档 - 永夜 https://www.shuijingwanwq.com/tag/go-1-26/ 32 32 Go 语言中 Goroutine 的 Panic 捕获与 recover 机制 https://www.shuijingwanwq.com/2026/05/22/12883/ Fri, 22 May 2026 09:53:51 +0000 https://www.shuijingwanwq.com/?p=12883 本文探讨了 Go 语言中 goroutine 发生未捕获 panic 导致程序崩溃的问题,通过对比使用和不使用 recover 的示例,分析了 defer 与 recover 机制的工作原理。结果显示,在 goroutine 中利用 defer 嵌入 recover 调用,能有效捕获异常值并阻断其传播,从而隔离单个协程的故障。这确保了主线程及其他正常运行协程不受影响,避免了进程整体退出,是保障生产环境服务稳定性的关键实践。

Go 语言中 Goroutine 的 Panic 捕获与 recover 机制最先出现在永夜。

]]>
Go 语言并发实战:素数统计性能优化对比(“传统串行实现”与“多协程并发实现”) https://www.shuijingwanwq.com/2026/05/20/12268/ Wed, 20 May 2026 10:04:08 +0000 https://www.shuijingwanwq.com/?p=12268 本文基于 Go 语言对比了传统串行实现与多协程并发实现统计 1 至 200,000 范围内素数的性能差异。传统方法使用循环在主线程顺序执行,而并发方法通过 Channel 建立任务队列,实现生产者与多消费者模型的动态负载均衡。测试结果显示,在双核 CPU 环境下,串行实现耗时约 25 秒,多协程并发实现耗时约 12 秒,效率提升 50%,证实利用多核优势能有效减少 CPU 密集型任务的总耗时。

Go 语言并发实战:素数统计性能优化对比(“传统串行实现”与“多协程并发实现”)最先出现在永夜。

]]>
Go 语言通道阻塞深度解析:从 Deadlock 到异步处理 https://www.shuijingwanwq.com/2026/05/19/11953/ Tue, 19 May 2026 11:30:59 +0000 https://www.shuijingwanwq.com/?p=11953 本文针对 Go 语言并发编程中无缓冲通道引发的阻塞问题,通过生产者-消费者模型对比分析了缺少消费者导致的死锁与读写速度不匹配的异步处理场景。文章详细阐述了无缓冲通道的同步特性及死锁检测机制,并解释了利用 exitChan 确保主线程正常退出的逻辑,最后总结了避免死锁的注意事项及使用带缓冲通道的建议。

Go 语言通道阻塞深度解析:从 Deadlock 到异步处理最先出现在永夜。

]]>
Go 并发实战:使用通道检查二叉树等价性 https://www.shuijingwanwq.com/2026/05/13/10333/ https://www.shuijingwanwq.com/2026/05/13/10333/#comments Wed, 13 May 2026 08:58:53 +0000 https://www.shuijingwanwq.com/?p=10333 文章针对使用 Go 语言检查二叉树是否包含相同值序列的问题,展示了利用并发原语和通道机制的解决方案。通过实现 Walk 函数进行中序遍历并发送节点值,再由 Same 函数启动两个 goroutine 并行遍历两棵树,利用通道的阻塞与关闭特性在主流程中同步比较。最终结论指出,该方法相比传统数组存储方式,无需额外空间、支持惰性求值与提前终止,且代码简洁逻辑清晰,体现了 Go 的并发设计哲学。

Go 并发实战:使用通道检查二叉树等价性最先出现在永夜。

]]>
https://www.shuijingwanwq.com/2026/05/13/10333/feed/ 1
Go学习笔记:Channel基础用法与4种核心注意事项(附代码测试) https://www.shuijingwanwq.com/2026/05/04/9681/ Mon, 04 May 2026 06:54:54 +0000 https://www.shuijingwanwq.com/?p=9681 本文探讨了Go语言并发编程中Channel的基础用法与四个核心注意事项。文章首先讲解了Channel的定义、初始化及引用类型特性,随后结合代码测试详细阐述了强类型约束、数据放满后阻塞写入、读取后可继续写入以及无协程时数据取完导致死锁的四种场景。通过分析测试结果,总结了Channel在实现Goroutine安全通信与同步中的关键作用及常见避坑方法。

Go学习笔记:Channel基础用法与4种核心注意事项(附代码测试)最先出现在永夜。

]]>
Go并发学习:从阶乘案例看Channel的必要性 https://www.shuijingwanwq.com/2026/05/02/9660/ https://www.shuijingwanwq.com/2026/05/02/9660/#comments Sat, 02 May 2026 07:34:39 +0000 https://www.shuijingwanwq.com/?p=9660 本文以计算1-200阶乘并存入map为案例,记录了从使用全局变量加锁同步到理解Channel必要性的过程。文章分析了无锁导致的并发读写报错、无休眠导致的主线程提前退出以及加休眠后仍存在的资源浪费与维护难题。通过对比指出,Channel作为并发安全的通信管道,不仅避免了手动加锁和休眠的隐患,还实现了精准同步,有效降低了代码复杂度,是解决Goroutine通信问题的最佳方案。

Go并发学习:从阶乘案例看Channel的必要性最先出现在永夜。

]]>
https://www.shuijingwanwq.com/2026/05/02/9660/feed/ 1
Go 语言进阶:深入理解自定义 Error 接口与无限递归陷阱 https://www.shuijingwanwq.com/2026/04/23/9572/ Thu, 23 Apr 2026 03:37:07 +0000 https://www.shuijingwanwq.com/?p=9572 本文结合 Go Tour 练习探讨了实现自定义 error 接口的过程,通过定义 ErrNegativeSqrt 类型并编写 Error 方法来处理负数平方根的计算。重点分析了在 Error 方法中使用 fmt.Sprint 可能引发的无限递归陷阱,解释了其调用机制,并提出了通过类型转换为 float64 打破循环的解决方案,最终总结出接口隐式实现及类型转换在错误处理中的注意事项。

Go 语言进阶:深入理解自定义 Error 接口与无限递归陷阱最先出现在永夜。

]]>
Go语言入门练习:闭包(Closure)实现斐波那契数列生成器 https://www.shuijingwanwq.com/2026/04/20/9553/ Mon, 20 Apr 2026 04:03:32 +0000 https://www.shuijingwanwq.com/?p=9553 本文介绍了在Go语言入门练习中,利用闭包实现斐波那契数列生成器的方法。文章详细说明了实现需求,即编写一个返回闭包的函数,该闭包每次被调用时返回数列的下一个值。通过在闭包外部定义变量来捕获并保留状态,利用并行赋值更新数值,最终实现了连续生成斐波那契数列的功能,并验证了运行结果。

Go语言入门练习:闭包(Closure)实现斐波那契数列生成器最先出现在永夜。

]]>
Go语言入门练习:Maps 实现单词计数(WordCount) https://www.shuijingwanwq.com/2026/04/16/9534/ https://www.shuijingwanwq.com/2026/04/16/9534/#comments Thu, 16 Apr 2026 07:17:38 +0000 https://www.shuijingwanwq.com/?p=9534 本文记录了Go语言单词计数练习的实现过程。通过使用strings.Fields函数分割字符串,并利用for range循环遍历切片,实现了将字符串中单词出现次数存入map的逻辑。文章详细解析了map的初始化与默认值特性,展示了代码实现与wc.Test测试验证过程,适合初学者巩固Maps用法及相关标准库函数的应用。

Go语言入门练习:Maps 实现单词计数(WordCount)最先出现在永夜。

]]>
https://www.shuijingwanwq.com/2026/04/16/9534/feed/ 1
Go Tour 切片练习本地运行踩坑全记录(从报错到成功运行) https://www.shuijingwanwq.com/2026/04/14/9496/ https://www.shuijingwanwq.com/2026/04/14/9496/#comments Tue, 14 Apr 2026 09:44:55 +0000 https://www.shuijingwanwq.com/?p=9496 本文记录了在 WSL 与 Docker 环境下本地运行 Go Tour 切片练习时遇到的依赖问题。由于国内代理未缓存 golang.org/x/tour 包,导致安装依赖时出现 502 报错。通过分析发现是系统 GOPROXY 环境变量限制所致,最终采用临时取消环境变量并直接访问官方源的方式成功安装依赖。文章详细梳理了从报错排查到成功运行并生成图片的完整解决过程。

Go Tour 切片练习本地运行踩坑全记录(从报错到成功运行)最先出现在永夜。

]]>
https://www.shuijingwanwq.com/2026/04/14/9496/feed/ 1