package main import ( "fmt" "reflect" ) type Student struct { } func (s *Student) Listen() { fmt.Println("listen") } func main() { student := Student{} value := reflect.V...
go
golang defer执行顺序
defer函数的执行顺序是先进后出,和栈一样,return 最后执行,当出现panic的时候,就会按照先进后出的顺序执行defer函数,最后才执行panic,return 不再执行。合理利用defer函数可以避免程序异常退出,保证程序的...
Go语言中Kill子进程的正确姿势
* 问题场景 我们在编写部署系统的时候,通常需要在机器上部署一个agent,用来执行部署脚本,为了防止部署脚本写的有问题,长时间hang住,我们通常会为脚本的执行设置一个超时时间,到了时间之后就kill掉该脚本的...
golang 实现每隔几分钟执行一个函数
1、使用定时器 2、使用这种方式 go function() func function() { // TODO 具体逻辑 // 每5分钟执行一次 time.AfterFunc(5*time.Minute, function) } 补充:Golang:每天零点定时执...
GO的lua虚拟机 gopher-lua
go 中使用 lua package main import ( lua "github.com/yuin/gopher-lua" ) func main() { l := lua.NewState() defer l.Close() if err := l.DoString(`print("Hello World")`); err != nil...
Golang 通过反射的方式调用结构体方法
在Go语言中,反射就是用来检查储存在接口变量内部pair对的一种机制,pair对是以值(value)和实际类型(concrete type)组成.在go中提供两种方法让我们可以轻松地访问接口变量的内容,分别是 reflect.ValueOf()和 r...
golang设计模式之访问者模式
访问者模式可以给一系列对象透明的添加功能,并且把相关代码封装到一个类中。 对象只要预留访问者接口Accept则后期为对象添加功能的时候就不需要改动对象。 大概的流程就是: 从结构容器中取出元素 创建...
golang设计模式之状态模式
状态模式,顾名思义,是一种基于有限状态机制的设计模式。在这种设计模式中,行为是由相应的状态来决定的。接下来我们会用一个售卖机的例子来说明下状态模式。为了便于说明,我们把场景简化一下,假设有一台售卖...
golang设计模式之建造者模式
建造者模式 定义 Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建...
golang设计模式之原型模式
原型模式 定义 如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式来创建新对象,以达到节省创建...