logo头像

待到风起时,扬帆济沧海

Golang

go语言编程模式

性能提示 如果需要把数字转换成字符串,使用 strconv.Itoa() 比 fmt.Sprintf() 要快一倍左右。 尽可能避免把String转成[]Byte ,这个转换会导致性能下降。 如果在 for-loop 里对某个 Sli...

gin_validator

概述在接口开发经常会遇到一个问题是后端需要写大量的繁琐代码进行数据校验,所以就想着有没有像前端校验一样写规则进行匹配校验,然后就发现了validator包,一个比较强大的校验工具包下面是一些学习总结,详细内容可以查看validator...

Go-GMP模型

https://learnku.com/articles/41728 GMP 模型 G= Goroutine 协程,P=Processor 处理器, M=Thread 线程 全局队列(Global Queue):存放等待运行的 ...

Go-深入解析slice底层实现

原文地址:https://halfrost.com/go_slice/ 切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来,为了开发者可以更加方便的使一个数据结构可以自动增加和减...

Go-log日志

日志使用o语言为我们提供了标准的log包,来跟踪日志的记录。下面我们看看日志包log的使用 1234func main() { log.Println("这是百度地址:","http://www...

Go-错误(error)处理方案

error接口error其实是一个接口,内置的,看下他的定义 12345// The error built-in interface type is the conventional interface for// represen...

Go 中 defer 与 return 之间的迷之执行顺序

执行顺序偶然间发现了一个有意思的地方:在使用defer时,匿名返回值的函数和命名返回值的函数的返回结果是不一样的。具体见如下代码: 123456789101112131415161718192021222324252627282930...

Go 中 defer坑

defer nil函数123456789func() { var run func() = nil defer run() fmt.Println("runs")}//...

Go-channel总结

channel的使用场景把channel用在数据流动的地方: 消息传递、消息过滤 信号广播 事件订阅与广播 请求、响应转发 任务分发 结果汇总 并发控制 同步与异步 channel的基本操作和注意事项channel 存在3种状态 ...

Golang sync 包的相关使用方法

为什么需要锁在并发的情况下,多个线程或协程同时去修改一个变量,可能会出现如下情况: 1234567891011121314151617181920212223242526package mainimport ( "fm...