- 博客(10)
- 资源 (5)
- 收藏
- 关注
原创 深入理解Goroutine:Go并发编程的核心引擎
Goroutine是Go语言并发编程的核心,它通过轻量级设计和高效的M:N调度模型,实现了“低成本、高并发”的编程体验。使用Goroutine的核心要点的:用 go 关键字快速创建Goroutine,注意主线程退出问题;优先使用Channel实现Goroutine间的通信与同步,遵循“通信共享内存”的设计哲学;必要时使用 sync.WaitGroup、sync.Mutex 等工具辅助同步;通过Context实现Goroutine的优雅退出,通过Goroutine池控制并发数量;
2026-01-16 08:35:27
536
原创 Go语言基础数据类型解析
静态类型约束:不同类型的数值不能直接运算(如int8和int16相加需显式转换),无隐式类型转换整数溢出风险:使用固定位数整数时,注意取值范围,避免溢出(Go编译期会检查常量溢出,运行时变量溢出会截断)浮点数精度:不使用==判断浮点数相等,需通过「差值小于极小值」判断(如字符串编码:遍历UTF-8字符串用for range,len()返回字节数而非字符数error非nil判断:自定义error时,确保Error()方法实现正确,避免出现「err!= nil但错误信息为空」的情况。
2026-01-16 08:34:42
400
原创 深入解析Golang反射:Value与Type
Golang反射的核心是Type(类型信息)和 Value(值信息),通过 reflect 包提供的API,程序可以在运行时动态解析类型、操作变量,实现通用组件的开发。反射的三大定律是使用的基础,必须牢记:从接口值反射出反射对象;从反射对象还原为接口值;修改反射对象需保证可设置(传入指针)。反射是一把双刃剑,虽然强大,但也伴随着性能损耗和代码复杂度的提升。在实际开发中,应遵循“能不用则不用,非用不可则慎用”的原则,同时注意类型检查、缓存反射结果等最佳实践,避免踩坑。
2026-01-15 08:38:08
623
原创 深入理解Golang defer与panic:异常处理与资源清理
Golang的defer与panic构建了一套简洁高效的异常处理与资源管理机制:defer是“资源安全网”,通过延迟执行确保资源清理逻辑不遗漏,其栈式执行和参数即时求值是核心细节;panic是“致命异常触发器”,用于处理不可预期的运行时错误,触发后会中断执行流程并向上传播;两者与recover协同,可实现“异常捕获+资源清理+程序恢复”的完整闭环,是Golang程序稳定性的重要保障。
2026-01-15 08:37:41
468
原创 深入理解Go语言关键字
核心功能:有两个核心用途:1. 定义自定义类型(基于现有类型封装新类型);2. 定义类型别名(给现有类型起别名,不创建新类型)。语法格式:自定义类型:type 新类型名 底层类型类型别名:type 别名 = 现有类型使用场景:封装特定业务类型(如ID、手机号)、定义结构体(struct)、接口(interface)等。实战示例:// 自定义类型:将int封装为UserID类型// 自定义类型:定义结构体类型ID UserID// 类型别名:给string起别名Str。
2026-01-14 08:43:14
1030
原创 Go语言包管理发展史(附Go Module命令全解析)
Go语言包管理的演进,本质是「从手动到自动、从分散到标准、从依赖工作区到依赖模块」的过程:GOPATH模式解决了「包管理的基本问题」,但限制了项目灵活性;第三方工具模式解决了「版本控制和项目隔离」问题,但带来了工具碎片化;Go Module模式则整合了前两个阶段的优势,实现了「官方标准化、项目独立、完善的版本控制、高效的依赖缓存」,成为当前和未来的主流方案。对于开发者而言,掌握Go Module的核心命令和配置,是高效进行Go项目开发和团队协作的基础。
2026-01-14 08:42:16
572
原创 深入理解Go语言函数(func)
核心定义:函数(func)是Go语言中封装特定逻辑的可复用代码块,通过指定「函数名、参数列表、返回值列表」定义,调用时传入指定参数,执行逻辑后返回结果(可选)。代码复用:将重复执行的逻辑封装为函数,一处定义、多处调用,减少冗余代码;逻辑解耦:将复杂业务拆分为多个单一职责的函数,代码结构清晰,便于维护和调试;模块化开发:按功能划分函数,实现业务逻辑的分层管理,提升开发效率;逻辑抽象:隐藏具体实现细节,对外暴露统一调用入口,降低使用成本。Go语言中,函数是一等公民。
2026-01-13 09:27:40
791
原创 深入理解Go语言切片(Slice)
核心定义:切片(Slice)是Go语言中基于固定长度数组封装的可变长度引用类型,表示一个拥有相同类型元素的有序序列,可理解为「动态的、可灵活扩容的数组」。切片的底层逻辑:切片并非独立的内存结构,它的底层始终依托一个不可变的数组实现,切片自身只是一个「内存引用视图」,包含三个核心字段(Go源码定义):指针(ptr):指向底层数组的内存起始地址;长度(len):切片中实际存储的有效元素个数(通过len(slice)获取);容量(cap):切片底层数组能容纳的最大元素个数(从指针指向位置开始计算,通过。
2026-01-13 09:00:06
854
原创 深入理解Go映射(Map)
简述Go映射(Map)的核心定位——Go语言内置的键值对核心数据结构,遵循“简洁高效、开箱即用”的设计哲学,是处理键值映射、快速查询、统计计数的“瑞士军刀”。介绍Map在开发中的核心作用(数据缓存、键值关联、高频统计、结构化存储),以及本文的核心目标(帮助读者从基础语法到实战场景,从核心特性到避坑指南,系统掌握Map的使用规范、设计思路与落地技巧,完全适配实战开发需求)。核心定义:Map是Go语言中用于存储键值对(key-value)集合的内置引用类型,可理解为“基于哈希表实现的字典”,通过唯一的key快速
2026-01-12 14:19:09
1338
原创 深入理解Go通道(Channel)
核心定义:通道是Go语言中用于 goroutine 之间传递数据和同步执行的特殊数据结构,可理解为“goroutine 之间的通信管道”。设计初衷:解决多 goroutine 并发时的共享资源竞争问题,通过“通信”替代“共享内存”,降低并发编程复杂度。通道是 Go 并发通信的核心,遵循“通信优先于共享内存”的设计哲学。核心区分:无缓冲通道(同步)、有缓冲通道(异步),需结合场景选择。进阶用法:方向限制、for range 遍历、select 多路复用,是解决复杂并发问题的关键。
2026-01-12 13:50:10
1169
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅