经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
 Go语言

goioc:一个使用 Go 写的简易的 ioc 框架

目录goioc 介绍快速上手接口介绍使用 goioc如何使用生命周期实例化获取对象结构体字段依赖注入Dispose 接口反射形式使用 goioc如何使用接口、结构体、结构体指针不会自动注入本身 goioc 介绍 goioc 是一个基于 GO 语言编写的依赖注入框架,基于反射进行编写。 支持...[2022/11/28]

Go日常开发常用第三方库和工具介绍

这里我主要将这些库分为两类: 业务开发基础工具开发 业务开发 首先是业务开发,主要包含了 web、数据库、Redis 等。 Gin ?????????? 首先是 Gin,一款 HTTP 框架,使用简单、性能优秀、资料众多;你还在犹豫选择哪款框架时,那就选择它吧,基本没错。 当然和...[2022/11/28]

Go中函数的使用细节与注意事项详解

目录细节汇总值传递和指针传递什么是重载函数类型的变量函数作为形参传入自定义数据类型返回值命名可变参数总结练习 细节汇总 函数的形参列表可以是多个,返回值列表也可以是多个形参列表和返回值列表的数据类型,可以是值类型、也可以是引用类型函数的命名遵循标识符命名规范,首字母不能是数字,首字母大写表示该函数...[2022/11/28]

Golang中Channel实战技巧与一些说明

Golang中Channel实战技巧与一些说明

目录Channel 的一些实战说明关于 close Channelclose Channel 的一些说明v, ok := <-ch 判断是否 close优雅判断是否 close 的封装for-range 读取 Channel 数据select 读写 Channel 数据Channel 的读写超...[2022/11/28]

go程序员日常开发效率神器汇总

一. 开发工具 1)sql2go用于将 sql 语句转换为 golang 的 struct. 使用 ddl 语句即可。例如对于创建表的语句: show create table xxx. 将输出的语句,直接粘贴进去就行。http: tming.cn/tool ql2go.html 2)tom...[2022/11/28]

Golang实现组合模式和装饰模式实例详解

目录组合模式component.gofile.gofolder.go组合测试装饰模式pizza.goveggieMania.gotomatoTopping.gocheeseTopping.gomain.go 本文介绍组合模式和装饰模式,golang实现两种模式有共同之处,但在具体应用场景有差异。通过...[2022/11/28]

Go高效率开发Web参数校验三种方式实例

web开发中,你肯定见到过各种各样的表单或接口数据校验: 客户端参数校验:在数据提交到服务器之前,发生在浏览器端或者app应用端,相比服务器端校验,用户体验更好,能实时反馈用户的输入校验结果。 服务器端参数校验:发生在客户端提交数据并被服务器端程序接收之后,通常服务器端校验都是发生在将数据写入...[2022/11/28]

聊聊Go里面的闭包

以前写 Java 的时候,听到前端同学谈论闭包,觉得甚是新奇,后面自己写了一小段时间 JS,虽只学到皮毛,也大概了解到闭包的概念,现在工作常用语言是 Go,很多优雅的代码中总是有闭包的身影,看来不了解个透是不可能的了,本文让我来科普(按照自己水平随便瞎扯)一下: 1、什么是闭包? 在真正讲述闭...[2022/11/21]

Go1.20?arena新特性示例详解

目录正文快速背景最新进展总结 正文 大概半年前,我写过一篇文章《Go 要违背初心吗?新提案:手动管理内存》。有兴趣了深入解的同学,可以再回顾一下。 当时我们还想着 Go 团队应该不会接纳,至少不会那么快: 懒得翻也可以看我再次道来,本文提到的提案《proposal: arena...[2022/11/19]

go并发编程sync.Cond使用场景及实现原理

目录使用场景实现原理copyCheckerWaitSignalBroadcast 使用场景 sync.Cond是go标准库提供的一个条件变量,用于控制一组goroutine在满足特定条件下被唤醒。 sync.Cond常用于一组goroutine等待,一个goroutine通知(事件发生)的场...[2022/8/31]

Go&nbsp;热加载之fresh详解

正文 热加载是指可以在不重启服务的情况下,保存后即可让更改的代码生效的一种开发模式。热加载可以显著的提升开发和调试的效率,有了热加载后,说明你不用重新再编译、再执行了。 特别是涉及到效果渲染,如前端的开发中,如果每次改了代码后都要重新编译再执行,那开发效率太低了。 最完美的就是:代码改了...[2022/8/23]

golang中使用匿名结构体的方法

golang中使用匿名结构体的方法

目录转化为map定义具名结构体定义匿名结构体 在一些项目中, 我们会使用json 来将字符串转为结构体,但是很多时候,这种结构体只会用一次,基本上只会用于反序列化, 对于这种只用到一次的结构体, 我们可以使用匿名结构体. 在gin 接收参数的时候会非常有用, 如我们将要接收的json 参数为 {...[2022/8/23]

Go语言如何高效的进行字符串拼接(6种方式对比分析)

目录前言string类型字符串拼接的6种方式及原理原生拼接方式"+"字符串格式化函数fmt.SprintfStrings.builderbytes.Bufferstrings.join切片appendBenchmark对比结论总结 前言 日常业务开发中离不开字符串的拼接操作,...[2022/8/22]

go日志库中的logrus

go日志库中的logrus

一、安装 go get github.com irupsen/logrus 二、使用 1、当做标准库使用 logrus实现了标准库log的方法,可以用标准库的方法用于logrus,例如 import ( log "github.com irupsen/logrus" ) ...[2022/8/22]

go语言中的json与map相互转换实现

主要是引入 "encoding/json" 包;用到的也就是其中的两个函数json.Marshal和json.Unmarshal。 1、json.Marshal #函数定义位于GOROOT or GOPATH的 rc/encoding/json/encode.go 中 ...[2022/8/16]

GO语言基本类型String和Slice,Map操作详解

目录本文大纲1、字符串StringString常用操作:获取长度和遍历字符串的strings包字符串的strconv包:2、切片Slice3、集合Map 本文大纲 本文继续学习GO语言基础知识点。 1、字符串String String是Go语言的基本类型,在初始化后不能修改,Go字...[2022/8/1]

Go?select使用与底层原理讲解

Go?select使用与底层原理讲解

目录1. select的使用2. 底层原理3. 数据结构4. 几种常见 casecase 1case2case3case4 1. select的使用 select 是 Go 提供的 IO 多路复用机制,可以用多个 case 同时监听多个 channl 的读写状态: case: 可以监听 cha...[2022/8/1]

快速掌握Go&nbsp;语言&nbsp;HTTP&nbsp;标准库的实现方法

目录HTTP clientClient 结构体初始化请求NewRequest 初始化请求Request准备 http 发送请求Transport获取空闲连接 queueForIdleConn建立连接 queueForDial等待响应http server监听处理请求Reference 本篇文章来分析...[2022/7/25]

go&nbsp;mock&nbsp;server的简易实现示例

go&nbsp;mock&nbsp;server的简易实现示例

目录前言代码步骤1步骤2步骤3步骤4最终效果最后 前言 学习golang也一段时间了,看了一些书,上周又看了一本入门级的《Go语言趣学指南》,是时候检验成果了。 目的:通过读取本地mock数据,发起http请求,返回给前端,实现mock功能。 代码 整体代码只在50行左右,是一个极其...[2022/7/25]

Golang&nbsp;模块引入及表格读写业务快速实现示例

目录介绍正文配置模块引入环境引入excelize库创建表格读取表格写入表格结语 介绍 在很多管理系统下都有不少让后端进行表格进行操作的业务需求,本期就带大家了解一下Golang中如何使用模块引入的,以及讲解怎么快速的使用excelize库,对表格进行读写创建的。 正文 配置模块引入环境 ...[2022/7/25]

Go实现文件分片上传

Go语言在写HTTP服务程序时,会经常用到文件上传和文件下载,文件上传和文件下载都可以用http包,默认的功能基本上够用了。http包支持文件下载的断点续传和进度显示,文件上传貌似不支持断点续传,不知道是不是要web端来实现。 然后我自己配合web端实现了大文件分片上传,来完成断点续传和进度显...[2022/7/25]

go单体日志采集zincsearch方案实现

目录前言一 构架二 zinsearch 安装二 logbeat三 zincsearch 使用经验1 关于删除2 关于日期date类型3 关于检索中时间选项结语 前言 微服务中的日志采集方案ELK(EFK)已经是基本事实标准了,但是单体服务中却没有像ELK这样的成熟采集方案,这与单体性质有关,单体...[2022/7/25]

Go语言学习笔记之错误和异常详解

目录错误异常总结 错误 Go 语言通过内置的错误接口提供了非常简单的错误处理机制,Error 类型是一个接口类型。 type error interface { Error() string } 可以在编码中通过实现 error 接口类型来生成错误信息。 函数通常在最后的...[2022/7/25]

Golang中的包及包管理工具go?mod详解

Golang中的包及包管理工具go?mod详解

目录一、包二、包管理工具go mod三、init函数四、使用第三方包 一、包 1.包的种类:系统内置包、自定义包、第三方包。 (1)系统内置包:go语言自带包,如str.conv、fmt等 (2)自定义包:开发者自己写的包 (3)第三方包:属于自定义包的一种,需下载到本地才能使用, ...[2022/7/25]

golang构建工具Makefile使用详解

目录正文 正文 可能是因为编译太简单了,golang 并没有一个官方的构建工具(类似于 java 的 maven 和 gradle之类的),但是除了编译,我们可能还需要下载依赖,运行测试,甚至像 easyjson,protobuf,thrift 这样的工具下载和代码生成,如果没有构建工具,这些工...[2022/7/25]

Go语言实现超时的三种方法实例

目录前言方法一:用两个通道 + A协程sleep方法二:使用Timer(定时器)方法三:使用context.WithTimeout附:go 实现超时退出总结 前言 超时,指一个协程A开启另一个协程B,A会阻塞等待B一段指定的时间,例如:5秒,A通知B结束(也有可能不通知,让B继续运行)。也就是说...[2022/7/20]

go语言中基本数据类型及应用快速了解

目录整数特殊的整数类型如果想确定int和uint的大小溢出浮点数复数布尔值字符串字符串的“长度”与遍历字符串的做法字符串的“长度”遍历字符串Rune与Byte(字节)字符串与字节slice的转换字符串不可变基本类型的值都是可比较的数值的类型转换运算符常...[2022/7/20]

go开源项目用户名密码验证的逻辑鬼才写法

引言 这两天在做微服务上云的事,之前一直是本地运行,后来在服务器搭建了生产环境集群。上云时出现了一些幺蛾子 云上的服务都需要身份验证的,没有专用网关的话,至少也要设置 basicAuth(用户名+密码的方式) 今天使用 Golang 知名项目 Viper 连接远端配置中心 Consul ...[2022/7/20]

Go中的关键字any&nbsp;interface是否会成为历史

目录引言示例增加新关键字后的对比 引言 大家在看 Go1.18 泛型的代码时,不知道是否有留意到一个新的关键字 any。 示例 func Print[T any](s []T) {} 之前没有专门提过,但有没有小伙伴以为这个关键字,是泛型代码专属的? 其实不是...在这次新的...[2022/7/20]

Go语言中使用urfave/cli命令行框架

命令行参数处理以及urfave/cli使用 1.通过Os.Args获取cli的参数 package main import ( "fmt" "os" ) func main() { if(len(os.Args) > 1) { ...[2022/7/19]

Go实现整合Logrus实现日志打印

Go实现整合Logrus实现日志打印

目录1 初步使用2 增加标签WithFields3 配置常见参数4 输出日志到文件5 利用Hooks将日志输出到其他地方 Github:github.com irupsen/lo… 1 初步使用 package main import ( ? "context" ? ...[2022/7/4]

基于微服务框架go-micro开发gRPC应用程序

基于微服务框架go-micro开发gRPC应用程序

go-micro是golang的一个微服务框架。这篇文章将介绍使用go-micro最新版本v4开发gRPC服务的方式。 1、安装protoc 这个工具也称为proto编译器,可以用来生成各种开发语言使用proto协议的代码。 下载地址:https: github.com/protocol...[2022/7/4]

golang select 机制和超时问题

golang 中的协程使用非常方便,但是协程什么时候结束是一个控制问题,可以用 select 配合使用。 首先声明,golang 使用并不熟悉,本文仅仅是记录使用过程中遇到的一些坑。 子协程和父协程的通信通常用 context 或者 chan。我遇到一个通常的使用场景,在子协程中尝试多次处理,父协...[2022/6/27]

Go语言单元测试基础从入门到放弃

目录Go语言测试go test工具单元测试函数格式单元测试示例go test -vgo test -run回归测试跳过某些测试用例子测试表格驱动测试介绍示例并行测试使用工具生成测试代码测试覆盖率testify/a ert安装使用示例总结 Go语言测试 这是Go单测从入门到放弃系列教程的第0篇,主...[2022/6/21]

Go语言单元测试模拟服务请求和接口返回

目录前言httptestgock安装使用示例总结 前言 这是Go单元测试从入门到放弃系列教程的第1篇,介绍了如何使用httptest和gock工具进行网络测试。 在上一篇《Go单元测试从入门到放弃—0.单元测试基础》中,我们介绍了Go语言编写单元测试的基础内容。 而实际工作中...[2022/6/21]

Go单元测试对数据库CRUD进行Mock测试

Go单元测试对数据库CRUD进行Mock测试

目录前言go-sqlmock安装使用示例miniredis安装使用示例总结 前言 最近在实践中也总结了一些如何用表格驱动的方式使用 gock Mock测试外部接口调用。以及怎么对GORM做mock测试,这些等这篇学完基础后,后面再单独写文章给大家介绍。 这是Go语言单元测试系列教程的第3篇,...[2022/6/21]

GoFrame框架数据校验之校验对象校验结构体

目录前言摘要基本概念方法介绍简要说明注意问题TIPS链式操作示例1:单数据校验简单示例进阶示例进阶示例打印结果示例2:Map数据校验示例3:Struct数据校验总结 前言摘要 这篇文章将会为大家介绍GoFrame数据校验中校验对象的知识点,包括:Validator对象常用方法的介绍、单数据校验、...[2022/6/20]

GoFrame基于性能测试得知grpool使用场景

目录前言摘要先说结论测试性能代码运行结果总结 前言摘要 之前写了一篇 grpool goroutine池详解 | 协程管理 收到了大家积极的反馈,今天这篇来做一下grpool的性能测试分析,让大家更好的了解什么场景下使用grpool比较好。 先说结论 grpool相比于goroutine...[2022/6/20]

GoFrame框架数据校验之校验结果Error接口对象

目录基本介绍方法示例注意问题方法详解进阶注意问题总结 上一篇文章介绍了 GoFrame数据校验之校验对象 | 校验结构体 ,得到了大家积极的反馈。 再接再厉,这篇总结分享:GoFrame数据校验之校验结果总结分享。 基本介绍 校验结果为一个Error接口对象。当数据规则校验成功时,校验方...[2022/6/20]

golang时间及时间戳的获取转换

目录一、获取时间1.1 获取当前时间1.2 获取之前/之后的时间获取1分钟之前的时间戳获取一小时之前的时间获取1小时后的时间二、获时间戳2.1 获取当前时间戳2.2 时间转时间戳2.2 时间戳转时间按模板格式化输出模板输出当前时间3. 时间计算3.1 时间加时间段3.2 计算两时间之差 一、获取时间...[2022/6/20]

Golang接口型函数使用小结

目录常规接口实现接口型函数出场进一步改造 什么是接口型函数?顾名思义接口函数指的是用函数实现接口,这样在调用的时候就会非常简便,这种方式适用于只有一个函数的接口。 这里以迭代一个map为例,演示这一实现的技巧。 常规接口实现 defer语句用于延迟函数调用,每次会把一个函数压入栈中,函数...[2022/6/20]

golang?对象深拷贝的常见方式及性能

目录关于golang拷贝的概念完整代码总结 关于golang拷贝的概念 Go语言中所有赋值操作都是值传递,如果结构中不含指针,则直接赋值就是深度拷贝;如果结构中含有指针(包括自定义指针,以及切片,map等使用了指针的内置类型),则数据源和拷贝之间对应指针会共同指向同一块内存,这时深度拷贝需要特别...[2022/6/20]

深入了解Go的interface{}底层原理实现

深入了解Go的interface{}底层原理实现

目录1. interface{}初探2. eface3. iface4. 接口转化 1. interface{}初探 Go是强类型语言,各个实例变量的类型信息正是存放在interface{}中的,Go中的反射也与其底层结构有关。 iface 和 eface 都是 Go 中描述interfac...[2022/6/6]

Golang的strings.Split()踩坑记录

目录背景场景前置排查验证打印底层信息追源码类似情况总结 背景 工作中,当我们需要对字符串按照某个字符串切分成字符串数组数时,常用到strings.Split() 最近在使用过程中踩到了个坑,后对踩坑原因做了分析,并总结了使用string.Split可能踩到的坑。最后写本篇文章做复盘总结与分享...[2022/5/30]

golang中按照结构体的某个字段排序实例代码

目录概述从大到小排序按照结构体的某个字段排序使用 sort.Stable 进行稳定排序附:根据结构体中任意字段进行排序总结 概述 golang的sort包默认支持int, float64, string的从小大到排序: int -> Ints(x []int)float64 ->...[2022/5/30]

go语言beego框架分页器操作及接口频率限制示例

go语言beego框架分页器操作及接口频率限制示例

目录获取所有文章数据获取总条数设置每页的条数总页数和当前页码获取分页数据返回数据beego接口频率限制 获取所有文章数据 o := orm.NewOrm() qs := o.QueryTable("Article") 12 获取总条数 count, _ := qs.Count()...[2022/4/18]

Go模板template用法详解

本文只介绍template的语法和用法,关于template包的函数、方法、template的结构和原理,见:深入解析Go template模板使用详解。 入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}。 <!DOCTYPE html&g...[2022/4/18]

深入解析Go&nbsp;template模板使用详解

本文只关注Go text/template的底层结构,带上了很详细的图片以及示例帮助理解,有些地方也附带上了源码进行解释。有了本文的解释,对于Go template的语法以及html/template的用法,一切都很简单。 关于template的语法以及具体使用方法,见:Go template...[2022/4/18]

Go并发4种方法简明讲解

一、goroutine 1、协程(Coroutine) Golang 在语言层面对并发编程进行了支持,使用了一种协程(goroutine)机制, 协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,但是又寄生于线程中,因此系统开销极小,可以有效的提高线程的任务并发性,而避免多线程的...[2022/4/7]

Golang原生rpc(rpc服务端源码解读)

创建rpc接口,需要几个条件 方法的类型是可输出的方法的本身也是可输出的方法必须有两个参数,必须是输出类型或者是内建类型方法的第二个参数是指针类型方法返回的类型为error rpc服务原理分析 server端 服务注册处理网络调用 服务注册 通过反射处理,将接口存入到map中,进行调...[2022/4/7]

347
2
记录数:921 页数:1/1912345678910下一页尾页
 友情链接: NPS
加载更多