Ir al diario: el propósito de diferir

Cerrar los recursos de bloqueo / liberación

	l.Lock()
	defer l.Unlock()

Error de recuperación

    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in f", r)
        }
    }()
    panic(2)

Estadísticas que requieren mucho tiempo

	defer func(begin time.Time) {
		took:=time.Since(begin).Nanoseconds() / 1000
		fmt.Print("took time:",took)
	}(time.Now())
	do()

Resultado modificado

Se puede usar para modificar el resultado devuelto después de capturar el pánico, el resultado debe ser nombrado, el
resultado es 2

func Do()(i int){
	defer func() {
		i++
	}()
	return 1
}

suplemento

El alcance del aplazamiento es el método completo, si desea ser más detallado, puede declarar métodos anónimos

    func (){
		l.Lock()
		do1()
		defer l.Unlock()
	}()
	do2()

Nota

Aplazar también tiene una pérdida de rendimiento. Si el tiempo de ejecución es claro y los requisitos de rendimiento son relativamente altos, todavía está en el ciclo for. Es mejor no agregar aplazamiento

Supongo que te gusta

Origin blog.csdn.net/qq_32198277/article/details/88837558
Recomendado
Clasificación