在了解Python装饰器后,其他他们的实现想法是一样的
这就是Go的装饰器模式,而因为Go没有语法糖这么一说,所以只能手动重新赋值给同名的变量

package main

import (
    "fmt"
    "time"
)

func Foo(n int) bool {
    fmt.Println("foo函数的参数:", n)
    time.Sleep(2 * time.Second)
    return true
}

type Decoer func(n int) bool

func Runtime(fn Decoer) Decoer {
    return func(n int) bool {
        fmt.Println("开始计时")
        StartTime := time.Now()
        result := fn(n) // 开始执行Foo函数
        EndTime := time.Since(StartTime) 
        fmt.Println("该函数执行完成耗时:", EndTime)
        return result
    }
}

func main() {
    Foo := Runtime(Foo)
    Foo(666)

}
Last modification:September 23, 2022
如果觉得我的文章对你有用,请随意赞赏