Go
文章平均质量分 75
我是唐青枫
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
别再只会 if err != nil:Go error 从错误链到工程实战详解
Go 错误处理最佳实践摘要(150字) Go采用显式错误处理,通过error接口和返回值传递错误。核心原则包括: 错误应携带上下文,使用fmt.Errorf包装(%w)或自定义错误类型 比较错误用errors.Is检查哨兵错误,errors.As提取结构化错误 错误处理应靠近错误源,保持主逻辑清晰 分层包装错误形成调用链,保留原始错误信息 日志记录通常在调用链最上层进行 简单错误用errors.New,需程序识别的定义哨兵错误 关键点:错误是值而非异常,应通过组合和包装保持可追溯性,同时提供足够的诊断信息。原创 2026-07-04 07:47:42 · 178 阅读 · 0 评论 -
别再把类型断言当强制转换:Go 从 comma-ok 到 type switch 实战详解
Go 类型断言与类型转换对比摘要 Go 语言中,类型断言 value.(T) 用于检查接口值的动态类型,而类型转换 T(value) 用于在不同类型间转换值。 关键区别: 类型断言:检查接口值内部存储的实际类型,匹配则返回值,否则 panic 或返回失败标志 类型转换:在允许转换的类型间改变值的表示形式 主要特点: 类型断言必须作用于接口值,类型转换适用于基础类型 断言目标类型必须精确匹配(包括指针类型和自定义类型) 推荐使用双返回值形式 val, ok := iface.(T) 避免 panic 多种类型原创 2026-07-02 11:23:43 · 206 阅读 · 0 评论 -
别把泛型写复杂了:Go generic 从类型参数到实战封装
Go 1.18 引入的泛型特性允许开发者编写更通用且类型安全的代码。泛型的核心思想是将类型作为参数传递,使同一套逻辑能适配多种类型。通过类型参数和约束(如 any、comparable 或自定义约束),可以避免重复编写功能相似但类型不同的代码。例如,求和函数 Sum 可以同时处理 int、float64 等类型。泛型还支持类型推断,简化调用方式。内置约束 comparable 确保类型可比较,适用于查找函数或 map 操作。泛型提升了代码复用性和类型安全性,是 Go 语言的重要增强。原创 2026-06-29 08:07:21 · 173 阅读 · 0 评论 -
别再把 interface 当万能盒子:Go 接口从隐式实现到项目解耦
Go语言中的接口(interface)是一种定义行为约定的类型,只声明方法而不包含字段或具体实现。接口通过方法集合描述类型的能力,任何实现了这些方法的类型都隐式满足该接口,无需显式声明。文章通过示例展示了接口的基本用法,包括定义、实现、类型断言和类型选择,并解释了接口变量存储的动态类型与值。同时指出了接口的常见陷阱(如nil判断问题)以及值/指针接收者对接口实现的影响。空接口interface{}(或any)可接受任意类型,但会丢失类型信息。Go的接口设计强调解耦,让实现与定义分离,提高了代码的灵活性。原创 2026-06-21 09:09:32 · 233 阅读 · 0 评论 -
别再怕指针:Go pointer 从地址到实战用法
Go语言指针基础摘要: 指针是保存变量内存地址的变量,通过地址访问或修改原值。核心操作符&取地址,*解引用。Go指针特点: 无指针运算,比C更安全 指针类型需匹配(如*int) 零值为nil,解引用前需判空 new()可创建非nil指针 使用场景: 函数参数需修改原值时传指针 结构体常用指针接收者方法 大对象避免值拷贝 注意: 值接收者操作副本,指针接收者操作原对象 方法调用时Go会自动处理可取地址变量的指针转换原创 2026-06-16 09:52:46 · 209 阅读 · 0 评论 -
别再把 struct 只当字段集合:Go 结构体从语法到项目实战
Go语言中的struct是一种重要复合类型,用于组合多个相关字段。它类似于其他语言的类,用于描述业务数据模型(如用户、商品等)。struct定义包含字段名和类型,支持嵌套其他结构体、切片、map等类型。创建结构体有多种方式,包括声明后赋值、按字段名初始化、使用指针等。结构体是值类型,传递时会复制,修改需使用指针。通过定义方法(值接收者或指针接收者)可以扩展结构体功能。字段可见性由首字母大小写控制,遵循Go的包外可见性规则。struct是Go组织业务数据的核心工具。原创 2026-06-11 22:11:55 · 225 阅读 · 0 评论 -
别再把 make 和 new 搞混:Go make 从切片到通道实战详解
make 用来把 slice、map、channel 初始化成可用状态。这点和 new 不一样。new 返回指针,得到的是某个类型的零值指针。make 返回类型本身,得到的是已经初始化好的 slice、map、channel。原创 2026-06-07 18:02:07 · 196 阅读 · 0 评论 -
别再把 new 当构造函数:Go new 从零值指针到实战用法
Go 语言中的 new 是一个内置函数,用于为指定类型分配零值内存并返回指针。其主要特点包括: 语法 p := new(Type) 返回 *Type 类型指针,指向该类型的零值 适用于所有类型,包括基本类型、结构体等 与构造函数不同,不会初始化业务默认值 结构体常用 &T{} 替代,因其支持字段初始化 与 make 的区别:new 返回指针,make 直接初始化 slice/map/channel 不推荐用于创建 slice/map/channel,可能引发 nil 引用问题 零值规则:数字为 0,指针/n原创 2026-06-06 10:31:52 · 228 阅读 · 0 评论 -
Go slice切片使用教程,一次通关!
Go中的 切片(slice) 是Go最强大、最常用的数据结构之一。它是对数组的轻量封装,比数组更灵活,几乎所有的集合处理都用切片来完成。切片是一个拥有 长度(len)和容量(cap) 的 动态数组视图。底层是一个数组,但可以动态扩容、共享数组。s := []int{} // 空切片,已初始化但无元素场景推荐写法初始化切片make([]T, len, cap) 或 []T{...}安全扩容不修改原切片复制切片清空切片s = s[:0] 或 var s []T。原创 2025-04-23 07:20:59 · 1361 阅读 · 0 评论 -
如何用Go写一个benchmark 解析器及Web UI 数据可视化?
用Go编写的benchmark输出解析器,功能如下读取的输出文件(如解析出每行数据写入成CSV文件(如Web UI可视化数据。原创 2025-04-11 07:18:10 · 681 阅读 · 0 评论 -
Go 字符串四种拼接方式的性能对比
使用完整的基准测试代码文件,可以直接运行来比较四种字符串拼接方法的性能。for索引+=的方式的方式的方式的方式。原创 2025-04-10 06:11:56 · 410 阅读 · 0 评论 -
Go下载安装及切换不同版本的方法
GVM(与Ruby中的RVM一样)最初是由Josh Bussdieker开发的,它允许为每个项目或项目组创建开发环境,分离不同的Go版本和包依赖关系,以提供更大的灵活性并防止版本问题。go install 命令会把go1.22.1版本作为1.22.2的可执行安装包,存放在 ~/go/bin下面。已经安装go的情况下(例如当前版本为:1.22.2),可以通过go install 来安装其他版本。切换到指定的包集后,后续使用go build、go run命令时会把下载的包安装到包集目录。原创 2024-04-18 18:11:48 · 9865 阅读 · 0 评论
分享