deferinit

package module
v0.0.0-...-7ecd283 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2016 License: MIT Imports: 2 Imported by: 3

README

deferinit

defer init/fini of golang

缘由:

  1. golang提供了内置的init函数,在程序启动之前执行,在一些情况下,我们需要在init函数执行之前做一些工作,例如读取配置文件,设置log,等等。

  2. 在一些时候,我们需要对系统进行清理,即对应于init函数的fini函数

用法:

1. deferinit.AddInit(f, fi func())

参数为两个func()类型的函数,f为init函数,fi为fini函数,f和fi可以为nil

2. deferinit.InitAll()

执行初始化函数

3. deferinit.FiniAll()

执行对应的清理函数,按照与init函数相反的顺序执行

示例

func TestDeferInit(t *testing.T) {
	AddInit(func() {
		fmt.Println("1")
	}, nil)
	AddInit(func() {
		fmt.Println("2")
	}, nil)
	AddInit(nil, func() {
		fmt.Println("-3")
	})
	AddInit(func() {
		fmt.Println("4")
	}, func() {
		fmt.Println("-4")
	})

	InitAll()
	FiniAll()
}

执行的结果为:

1
2
4
-4
-3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddInit

func AddInit(fi func(), ff func(), pos int)

pos越大, 优先级越高

func AddRoutine

func AddRoutine(f gr)

routines

func FiniAll

func FiniAll()

func InitAll

func InitAll()

func RunRoutines

func RunRoutines()

func StopRoutines

func StopRoutines()

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL