详解如何使用Go的Viper来解析配置信息

目录前言Viper简介快速上手库的安装读取配置文件单个属性序列化为对象更多语法写回配置文件WriteConfigSafeWriteConfigWriteConfigAsSafeWriteConfigAs监听配置文件注册和...

从零封装Gin框架实现日志初始化及切割归档功能

目录前言安装定义日志配置项定义 utils 工具函数初始化 zap定义全局变量 Log测试前言本篇来讲一下怎么将日志服务集成到项目中,它也是框架中必不可少的,平时代码调试,线上 Bug...

Golang中常见的三种并发控制方式使用小结

目录1. sync.WaitGroup2. channel2.1 使用无缓冲channel进行同步2.2 使用有缓冲channel进行限流3. Context3.1 超时控制3.2 取消操作3.3 资源管理Go语言中的goroutine是一种...

浅析Golang如何向已关闭的chan读写数据

目录1. 向已关闭的chan写2. 向已关闭的chan读1. 向已关闭的chan写会直接panic,报 send to close channel错误package mainfunc main() { // 创建缓冲区为4的字符串chan schoo...

浅析Go语言中内存泄漏的原因与解决方法

目录channel 泄漏select case 导致协程泄漏for range 导致的协程泄漏goruntine 中 map 并发用火焰图分析下内存泄漏问题分析协程泄漏分析内存增长泄漏遵循一个约定:如果gorou...

详解Go 1.22 for循环的两处重要更新

目录循环的每次迭代都会创建新变量循环支持对整数范围进行迭代小结Go 1.22 版本于 2024 年 2 月 6 日发布,引入了几个重要的特性和改进。在语言层面上,这个版本对 for 循环进...

go语言go func(){select{}}()的用法

本文主要介绍了go语言go func(){select{}}()的用法,具体如下:go func(){ select{ ...... }}()是使用Goroutine和Channel的一个例子,也是Go语言中异步编程的标志之一。
具体来...

Golang使用cobra实现命令行程序的示例代码

目录前言Cobra库介绍简单应用进阶使用总结前言交付的数据文件,需要验证文件中的字段数量等功能,使用Go开发一个命令行程序进行交付Cobra库介绍Cobra 是 Go 语言中一个强大的命...

Golang中interface转string输出打印方法

目录前言一、interface 转json再转string二、使用类型判断总结前言在开发过程中,有时我们使用interface类型接受某些参数接口或返回类型,但输出时,比如记录日志时存在很多不方...

go交叉编译sqlite报错问题解决分析

目录go sqlite交叉编译编译问题报错交叉编译go环境变量组合go-sqlite的交叉编译分析go sqlite交叉编译最近服务端用到了sqlite,因为服务端用go进行编写的,在移植完go-sqlite3...

Golang使用crypto/ed25519实现数字签名和验证

目录引言crypto/ed25519 算法简介环境搭建和准备工作生成密钥对进行数字签名验证签名实际应用场景案例总结引言在当今数字化时代,网络安全显得尤为重要。无论是在网上进行交...

Golang Fasthttp选择使用slice而非map 存储请求数据原理探索

目录引言Slice vs Map:基本概念内存分配和性能Fasthttp 中的 SliceMap性能优化的深层原因存储数据特性CPU 预加载特性结论引言Fasthttp 是一个高性能的 Golang HTTP 框架,它在...

利用golang实现pdf中自动换行的表格

目录实现自动换行的表格创建页面、指定字体其他常用写入方法需要用到的库:jung-kurt/gofpdf由于CellFormat方法不支持\n换行,会被变成乱码,MultiCell方法会自动将坐标定位到下...

深入探究Go语言的错误策略与异常机制

目录前言Go错误处理策略创建error的几种方式errors包fmt包自定义错误类型如何处理错误直接返回错误记录日志并继续运行记录日志并结束运行Go异常处理机制panic函数recover函...

golang sudog指的是什么

sudog代表在等待队列中的goroutine,比如channel发送接受。由于goroutine和同步对象的关系是多对多,因此需要sudog映射type sudog struct { // 指向的goroutine g *g // 指向...

Go引用github包的详细流程步骤

目录Linux上如何引用如果定义了环境变量进入正题①、创建引用目录②、拷贝源码③、引用Windows上如何引用原理上和linux系统引用相似如果没定义GoPathLinux上如何引用如果定...

go语言实现LRU缓存的示例代码

目录简单了解 LRU 是什么LRU 机制实现分析题目描述详细代码缓存是在平时开发中最常用的中间件之一,尤其是在 WEB 开发中更为常见,大家最常用的肯定还是 Redis 或者 Memcached...

go原子级内存操作实现

原子级内存操作是在多线程并发执行时,能够确保某个内存操作是不可中断的操作。在计算机系统中,CPU执行指令是基本的原子操作,即一个指令的执行是不可被中断的。然而,在多线程并...

提高golang源码阅读效率的六个高级技巧

目录引言第一个:在大型项目中游刃有余的行走使用快捷键:alt+Home第二个:在已经打开的多个文件之间来回穿梭使用快捷键:alt+left/right left 表示左箭头,right 表示右箭头第三个:远...

使用golang在windows上设置全局快捷键的操作

目录hotkey热键1.需求2.使用包3.开发文档4.具体实现5.fyne结合hotkey 开发一个辅助工具hotkey热键1.需求最近在工作中,总是重复的做事,想着自己设置一个快捷键实现windows 剪...

Go基于struct tag实现结构体字段级别的访问控制

目录struct tag 是什么?具体有什么用呢?常见使用场景JSON/XML 序列反序列化数据库操作数据验证tag 行为自定义案例:结构体字段访问控制定义结构体实现权限控制使用演示总结stru...

Go语言中实现enum枚举的方法详解

目录使用 iota 和常量支持字符串转化的枚举值结构体枚举值结构体类似命名空间效果类型安全真实场景总结你是否了解过 Go 中的枚举呢?枚举,即 enum,可用于表示一组范围固定的值,...

Golang使用Gin实现文件上传的示例代码

目录前言使用原生net/http库实现文件上传使用Gin实现文件上传单个文件上传FormFile()获取文件SaveUploadedFile()保存到本地 设置缓冲区大小限制文件大小限制文件类型完整示...

一文带你探索Go语言中crypto/md5标准库的强大功能

目录引言Go语言和MD5的基础知识MD5算法简介Go语言概述Go中的MD5实现crypto/md5 库的使用方法基本用法处理大型数据安全注意事项实际案例分析示例1:文件的MD5校验示例2:网络数...

如何在golang中检查文件是否存在

目录os.Stat 检查文件状态与 C 对比Go1.13 以及之后推荐使用 errors.Is直接使用 Open 避免竞态条件open 是原子操作结论Go 中如何检查文件是否存在呢?如果你用的是 Python,可...

Golang Gin框架获取请求参数的几种常见方式

目录传递参数的方式HeaderURLHTTP Body直接获取请求参数获取URL Path中的参数获取URL Query中的参数获取HTTP Body中的参数绑定请求参数绑定Header参数绑定URL Path参数绑定...

Go操作各大消息队列教程(RabbitMQ、Kafka)

目录1 RabbitMQ1.1 概念①基本名词②常见模式1.2 搭建(docker方式)①拉取镜像②创建并启动容器③web界面创建用户和virtual host1.3 代码操作①RabbitMQ struct:包含创建、消费...

更换GORM默认SQLite驱动出现的问题解决分析

目录GORM简介安装快速开始GORM使用更换第三方SQLite驱动解决问题解决方案:更换GORM默认的SQLite驱动代价GORM简介GORM 是 Go 语言中最受欢迎的 ORM 库之一,它提供了强大的功能...

Go语言实现可选参数的方法小结

目录方法1:可变长参数(Variadic Args)方法2:使用Map方法3:使用结构体(Structs)方法4:函数选项模式(Functional Options Pattern)总结我们编程时,常会遇到:一个函数在大多数情况下只需要...

一文掌握gorm简介及如何使用gorm

目录gorm简介什么是gorm?gorm的特点如何使用gorm?总结gorm简介什么是gorm?gorm是一个强大的Go编程语言中的ORM(对象关系映射)库。ORM是一种技术,它将数据库表中的数据映射到面向对...

一文了解Go语言的并发特性

目录Goroutines: 轻量级线程Channels: 数据的并发安全传递Select: 多路复用实例:使用Go并发特性实现一个简单的并发模型总结补:go语言高并发特性应用场景应用示例代码Go语言自...

Golang使用pprof检查内存泄漏的全过程

目录前言测试代码发送请求分析内存查看内存分配比较内存分配查看启动以来的内存分配前言pprof 是golang提供的一款分析工具,可以分析CPU,内存的使用情况,本篇文章关注它在分析...

golang压缩与解压缩文件的示例代码

目录压缩核心处理解压缩压缩入口压缩函数useBasePathInZip参数:为 false 相当于全文件视图,zip中没有目录
为 true表示保留源文件的路径(srcPaths如果是相对路径,则压缩后zip文...

Go语言实现lru淘汰策略和超时过期

目录lru淘汰策略超时淘汰代码实现实例化缓存添加数据删除缓存获取缓存定期删除测试lru淘汰策略缓存的大小是有限的,当添加数据发现剩余缓存不够时,需要淘汰缓存中的部分数据。...

使用Go语言实现心跳机制

目录Go 实现心跳心跳程序Go 实现心跳心跳最典型的应用场景是是探测服务是否存活,比如在 Zookeeper 中,会使用心跳探测服务是否存货,如果服务已经死亡,会将服务从注册表中删除,避...

Go有效获取变量类型多种方法探索

目录Go语言中,如何快速获取一个变量的类型?Go 的类型系统类型获取使用 fmt.Printf类型选择类型选择反射 reflect.TypeOf其他注意点错误处理性能考量总结Go语言中,如何快速获取...

详解如何在Golang中执行shell命令

目录使用 exec.Command() 运行简单的 shell 命令是否可以在不存储输出的情况下执行shell命令为什么我们不应该使用 exec.Command() 函数在后台执行 shell 命令并等待其完成...

go货币计算时如何避免浮点数精度问题

目录为什么是问题下一个问题 — 传递你的钱我们的选择是什么简单的例子结论在开发的初始阶段,我们经常会遇到“浮点数精度”和“货币值表示”的问...

一文详解Golang使用接口支持Apply方法的配置模式

目录Golang使用接口支持Apply方法的配置模式示例解析Golang使用接口支持Apply方法的配置模式Golang 中,可以使用接口(interface)来实现一种配置模式,其中配置对象实现一个接口,并...

Go打印结构体提升代码调试效率实例详解

目录引言定义结构体使用 fmt.Printf实现 String 方法json.MarshalIndentreflect 包打印复杂结构性能压测三方库go-spewpretty结语引言不知道大家是否遇到打印复杂结构的需求...

浅析Golang中make和new的用法区别

目录相同点不同点1.传递的参数不一样2.返回的参数类型不一样3.使用场景不一样总结相同点都是内建函数,都是在堆上分配内存,都需要传递类型参数不同点1.传递的参数不一样new函...

golang如何实现三元运算符功能

目录使用 if-else 语句一行表达式If 函数奇淫巧技:基于 map为什么 Go 没有三元运算符总结今天来聊聊在 Go 语言中如何实现类似三元运算符的功能。首先,什么是三元运算符?在其他...

详解Golang如何监听某个函数的开始执行和执行结束

如果想监听函数(方法)开始执行和执行结束,你需要设置两个通道:chanStarted: 用于发送开始执行信号。chanFinished: 用于发送执行结束信号。同时,为了保证监听方能实时得知“...

golang防止内存逃逸的方法小结

在Go语言中,内存逃逸是指在函数中分配的变量在函数结束后仍然被引用,从而导致变量的生命周期延长,被分配在堆上而不是栈上。防止内存逃逸有助于提高程序的性能,因为栈上分配的内...

Golang实现IP地址转整数的方法详解

目录IPv4转整数IPv6转换为整数在 Go 语言中,将 IP 地址转换为整数涉及到解析 IP 地址并处理其字节表示,IPv4 地址由 4 个字节组成,可以直接转换为一个 32 位整数。IPv6 地址更...

深入浅出Go语言:手把手教你高效生成与解析JSON数据

目录一、JSON解析到结构体1.JSON名称/值对2.JSON值3.JSON数据4.JSON对象5.JSON数组6.JSON布尔值7.JSON nullJson解析到结构体二、JSON转map三、生成JSON一、JSON解析到结构...

Golang使用Zookeeper实现分布式锁

目录什么是分布式锁Zookeeper 与 Redis 的分布式锁对比实现方式特性适用场景可靠性为什么 Zookeeper 可以实现分布式锁使用 Golang 实现 Zookeeper 分布式锁创建 zookeeper...

Go语言构建流数据pipeline的示例详解

目录什么是pipelineSquaring numbers 平方数扇入和扇出短暂的停顿Explicity cancellation 显示取消Digesting a tree 对树进行摘要并行计算摘要有界的并行总结什么是pipelin...

golang通过cgo调用C++库源码示例

目录思路C ++ 相关文件目录列表源码示例some.hsome_wrapper.hsome_wrapper.cpp将 C++ 库包装成 C 库Golang CGO 调用 C 库参考总结 思路将 C++ 库包装成 C 库 -> golang 通...

Golang中crypto/rand库的使用技巧与最佳实践

目录引言:为什么选择 crypto/randcrypto/rand 基本概念与原理1. 加密安全的伪随机数生成器(CSPRNG)2. 操作系统的随机数源3. 应用场景如何使用 crypto/rand:基础示例1. 生成随机...

返回顶部
顶部