gpt4 book ai didi

golang代码插入/替换

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:51 27 4
gpt4 key购买 nike

我喜欢不允许代码重复。但是我有一种情况,当我必须在我想测量执行时间的每个函数中重复它时,我对此无能为力。例如一个函数:

func someFunc() {
start_time := time.Now()
defer fmt.Println("Execution time: %v", time.Now().Sub(start_time))
<... doing some bussiness ...>
}

现在我必须在每个函数中重复前两笔(原来它们更复杂,因为调用了一个函数名)。所以我不能制作一个测量时间的函数,因为我必须在其中使用延迟。我什至不能为第二笔画创建一个函数,因为它最初在 Println 中调用了一个函数名称,这就是为什么生成的名称不是所需函数的原因。有没有办法通过一些标签或模板插入此代码,例如,像这样:

func someFunc() {
//go-insert measuretime.tmpl
<... doing some bussiness ...>
}

measuretime.tmpl 是:

start_time := time.Now()
defer fmt.Println("Execution time: %v", time.Now().Sub(start_time))

最佳答案

这个技巧可能会有所帮助:推迟对返回包含开始时间的函数的函数的调用。

func elapsed() func() {
start := time.Now()
return func() {
fmt.Println("Duration was", time.Since(start))
}
}

调用如下:

defer elapsed()()

Have a play

话虽如此,基准测试是衡量 Go 性能的常用方法。参见 how to write benchmarks in Go .

关于golang代码插入/替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43014528/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com