Logo

标签:编程

17 篇文章

Golang 开发技巧与高级用法汇总

Golang 开发技巧与高级用法汇总本文汇总了 Golang 开发过程中高频实用的技巧及进阶高级用法,涵盖基础语法优化、并发编程、性能调优、反射与泛型、错误处理等核心领域,每个知识点均配套可直接运行的示例代码,并附加场景说明,帮助开发者提升编码效率、优化程序性能。一、基础语法进阶技巧1. 切片高效操...

Golang map 底层结构与原理深度解析

Golang map 底层结构与原理深度解析Golang 中的 map(映射)是一种无序的键值对集合,用于快速存储和查找关联数据,其底层基于哈希表(Hash Table)实现,兼具高效的插入、删除和查询性能。与其他语言的 map 不同,Golang map 从设计上保证了并发安全的基础约束(禁止并发...

Golang Channel 底层结构与原理深度解析

Golang Channel 底层结构与原理深度解析Golang 中的 Channel(通道)是实现 Goroutine 间通信与同步的核心机制,其设计遵循 CSP(Communicating Sequential Processes)并发模型,践行了 Go 语言“不要通过共享内存来通信,而要通过通...

Golang 中常用的字符串拼接方式对比

Golang 中常用的字符串拼接方式对比一、字符串拼接方式下面按「使用频率+性能」排序,逐一讲解每种方式的用法、原理和适用场景,并附带完整代码示例。1. 直接使用 + 号拼接原理:Go 字符串不可变,每次+都会创建新字符串,复制原有内容到新内存空间。适用场景:仅适合少量、固定数量的字符串拼接(如2-...

Golang 反射

Golang 反射Go 语言中的反射(Reflection)是一种在运行时动态检查(编译阶段不知道类型)、修改程序自身结构和行为的能力,主要通过 reflect 包实现。一、变量类型1. 静态类型编译时就能确定的类型,称为静态类型。2. 动态类型运行时才知道的类型,称为动态类型(例如,空接口)。二、...

Golang 内存管理

Golang 内存管理一、内存分配1. 预申请内存的划分(1)spans存放 span 的指针,每个指针对应一个或多个 page。(2)bitmap通过 arena 计算得出,主要用于 GC(垃圾回收)。(3)arena(堆区)应用所需内存从这里分配。spans 和 bitmap 用于管理 aren...

Golang 并发控制

Golang 并发控制一、临界资源临界资源是指并发环境中,多个进程、线程或协程共享的资源。在并发编程中,若对临界资源处理不当,往往会导致数据不一致的问题,即临界资源的安全问题。二、CSP 并发模型CSP(Communicating Sequential Processes)并发模型是 Go 语言的核...

Golang 通道(Channel)

Golang 通道(Channel)Channel 是 Go 语言提供的用于 goroutine 之间共享数据的机制,可在并发活动中实现 goroutine 间的资源或数据共享,其底层数据结构为环形队列 + 协程,能保证同步交换。一、通道类型1. 按是否有缓冲划分(1)无缓冲通道(Unbuffere...

Golang 协程(Goroutine)

Golang 协程(Goroutine)一、基本概念Go 协程(Goroutine)是 Go 语言并发模型的核心,是一种由运行时管理的轻量级线程。进程、线程和协程的关系:线程可以理解为轻量级的进程协程可以理解为轻量级的线程二、核心特性1. 资源占用极低创建成本低相比线程,协程的创建和销毁成本更低,能...

Golang 包与包管理

Golang 包与包管理一、包的介绍1. 包的定义与作用包是 Go 语言中用于区分命名空间(避免同一文件夹下出现同名文件)和管理项目的机制。创建包的通常方式是:创建一个文件夹,在该文件夹下的 Go 文件中使用 package 关键字声明包名称。2. 包的基本规则通常,文件夹名称和包名称保持一致。同一...