go

golang 排序任意数据结构

使用 sort.Sort() 或者 sort.Stable() 函数可完成对任意类型元素的排序。 一个内置的排序算法需要知道三个东西:序列的长度,表示两个元素比较的结果,一种交换两个元素的方式;这就是 sort.Interface 的三个...

Golang 结构体切片排序

使用 sort.SliceStable(),在排序切片时会保留相等元素的原始顺序。 按照年龄升序排序的示例 func main() { slStdnt := []struct { Name string Age int Height int }{ {"Alice", 23,...

golang defer执行顺序

defer函数的执行顺序是先进后出,和栈一样,return 最后执行,当出现panic的时候,就会按照先进后出的顺序执行defer函数,最后才执行panic,return 不再执行。合理利用defer函数可以避免程序异常退出,保证程序的...

Go语言中Kill子进程的正确姿势

* 问题场景 我们在编写部署系统的时候,通常需要在机器上部署一个agent,用来执行部署脚本,为了防止部署脚本写的有问题,长时间hang住,我们通常会为脚本的执行设置一个超时时间,到了时间之后就kill掉该脚本的...

golang设计模式之访问者模式

访问者模式可以给一系列对象透明的添加功能,并且把相关代码封装到一个类中。 对象只要预留访问者接口Accept则后期为对象添加功能的时候就不需要改动对象。 大概的流程就是: 从结构容器中取出元素 创建...

golang设计模式之状态模式

状态模式,顾名思义,是一种基于有限状态机制的设计模式。在这种设计模式中,行为是由相应的状态来决定的。接下来我们会用一个售卖机的例子来说明下状态模式。为了便于说明,我们把场景简化一下,假设有一台售卖...