golang

Mygin中间件优化及logger日志中间件

本篇是mygin的第七篇,参照gin框架,感兴趣的可以从 Mygin第一篇 开始看,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现。 目的 中间件Middleware优化 默认log日志中间件 在上篇 Mygin实现中间件Middleware 中间件Middleware »

Mygin中间件优化及sync.Pool上下文复用

本篇是mygin的第六篇,参照gin框架,感兴趣的可以从 Mygin第一篇 开始看,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现。 目的 中间件Middleware优化 默认log日志中间件 在上篇 Mygin实现中间件Middleware 中间件Middleware »

errgroup的常见误用

errgroup想必稍有经验的golang程序员都应该听说过,实际项目中用过的也应该不在少数。它和sync.WaitGroup类似,都可以发起执行并等待一组协程直到所有协程运行结束。除此之外errgroup还可以在协程出错时取消当前的context,以及它还能控制可运行的协程的数量。 但在日常的代码 »

apocelipes

Go语言的100个错误使用场景(一)|代码和项目组织

我的愿景是以这套文章,在保持权威性的基础上,脱离对原文的依赖,对这100个场景进行篇幅合适的中文讲解。所涉内容较多,总计约 8w 字,这是该系列的第一篇文章,对应书中第1-10个错误场景。 目录 前言 1. Go: Simple to learn but hard to mast »

Golang并发控制方式有几种?

Go语言中的goroutine是一种轻量级的线程,其优点在于占用资源少、切换成本低,能够高效地实现并发操作。但如何对这些并发的goroutine进行控制呢? 一提到并发控制,大家最先想到到的是锁。Go中同样提供了锁的相关机制,包括互斥锁sync.Mutex和读写锁sync.RWMutex;除此之外G »

lianshuiwuyi

8种超简单的Golang生成随机字符串方式

go语言中,有没有什么最快最简单的方法,用来生成只包含英文字母的随机字符串。 本文分享自华为云社区《Golang生成随机字符串的八种方式与性能测试》,作者: 张俭。 前言 这是**icza**在StackOverflow上的一篇高赞回答,质量很高,翻译一下,大家一起学习 问题是:go语言 »

Go 语言为什么建议多使用切片,少使用数组?

大家好,我是 frank,「Golang 语言开发栈」公众号作者。 01 介绍 在 Go 语言中,数组固定长度,切片可变长度;数组和切片都是值传递,因为切片传递的是指针,所以切片也被称为“引用传递”。 读者朋友们在使用 Go 语言开发项目时,或者在阅读 Go 开源项目源码时,发现很少使用到数组,经常 »

Golang标准库 container/list(双向链表) 的图文解说

Golang标准库 container/list(双向链表) 的图文解说 提到单向链表,大家应该是比较熟悉的了。今天介绍的是 golang 官方库提供的 双向链表。 1、基础介绍 单向链表中的每个节点包含数据和指向下一个节点的指针。其特点是每个节点只知道下一个节点的位置,使得数据只能单向遍历。 示意 »

Go 语言为什么很少使用数组?

大家好,我是 frank,「Golang 语言开发栈」公众号作者。 01 介绍 在 Go 语言中,数组是一块连续的内存,数组不可以扩容,数组在作为参数传递时,属于值传递。 数组的长度和类型共同决定数组的类型,不同类型的数组之间不可以比较,否则在编译时会报错。 因为数组的一些特性,我们在 Go 项目开 »

Golang实现JAVA虚拟机-运行时数据区

Golang实现JAVA虚拟机-运行时数据区 原文链接:https://gaoyubo.cn/blogs/8ae1f4ca.html 前置 Golang实现JAVA虚拟机-解析class文件 一、运行时数据区概述 JVM学习: JVM-运行时数据区 运行时数据区可以分为两类:一类是多线程 »

Gao-yubo

Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析

学习基础知识 掌握 Go 语言的常见概念,如变量、循环、条件语句、函数、数据类型等等。深入了解 Go 基础知识的好起点是查阅 Go 官方文档 文章链接:Go 编程语言详解:用途、特性、与 Python 和 C++ 的比较 基本语法 了解 Go 语言的基本语法,包括 Go 程序的执行方式、包引入、主函 »

xiaowange

Go切片是值传递还是引用传递?

Go没有引用传递和引用类型!!! 很多人有个误区,认为涉及Go切片的参数是引用传递,或者经常听到Go切片是引用类型这种说法,今天我们就来说一下方面的问题。 什么是值传递? 将实参的值传递给形参,形参是实参的一份拷贝,实参和形参的内存地址不同。函数内对形参值内容的修改,是否会影响实参的值内容,取决于参 »

lz0925 Go

Golang中如何自定义时间类型进行xml、json的序列化/反序列化

在日常开发工作中,我们进行会遇到将 struct 序列化 json字符串以及将 json字符串 反序列化为 struct 的场景,大家也对此十分熟悉。 最近工作中,遇到了需要将 struct 序列化 xml字符串以及将 xml字符串 反序列化为 struct 的场景,对于普通类型的字段 »

huageyiyangdewo Golang

听说90%的人都没搞定手撕协程池这道面试题!

之前有朋友只看了标题就划走了,结果面试就碰到原题了,那个后悔呀! 特别的缘分 听说90%的人都没搞定手撕协程池这道面试题! 能看到这篇文章一定是特殊的缘分,请务必珍惜,请详细看看吧,哈哈。 不止上图,最近 Go就业训练营 中不少小伙伴说,面试中碰到了好几次手撕协程池的问题。 解题思 »

避免defer陷阱:拆解延迟语句,掌握正确使用方法

深入解析Go语言中defer语句的特点和使用场景,揭示defer的执行顺序和对返回值的影响,帮助开发者避免在使用defer时陷入常见的陷阱。 基本概念 Go语言的延迟语句defer有哪些特点?通常在什么情况下使用? Go语言的延迟语句(defer statement)具有以下特点: »

clickHouse-golang

目录 clickHouse优势与劣势 golang操作clickHouse clickHouse优势与劣势 ClickHouse和传统的MySQL在设计和使用场景上有一些显著的区别,因此它们各自具有不同的优势和劣势。 ClickHouse的优势: 分布式架构:ClickHouse是为大数 »

guyouyin123

golang sync.noCopy 类型 —— 初探 copylocks 与 empty struct

前言 主要根据vue官网文档完成。对一些平时可能会用到的知识、组件进行收集,为的是对vue的可用性有一个大致的了解。博客中的组件介绍可能只涉及简单用法,完整用法还是以官网为准。   基础 启动过程: 主文件(main.js)是程序的起点,在主文件里挂在容器。如app.mount( »

leozmm

设计自用的golang日志模块

前言 主要根据vue官网文档完成。对一些平时可能会用到的知识、组件进行收集,为的是对vue的可用性有一个大致的了解。博客中的组件介绍可能只涉及简单用法,完整用法还是以官网为准。   基础 启动过程: 主文件(main.js)是程序的起点,在主文件里挂在容器。如app.mount( »

qinqiao