Golang中uuid.New()函数打补丁仅在调试模式生效的问题求助
Golang中uuid.New()函数打补丁仅在调试模式生效的问题求助
各位Golang的小伙伴们,我最近写测试代码时碰到个离谱的问题:我用mpatch给uuid.New()函数打补丁,想让它返回我指定的UUID,结果这补丁居然只有开启调试模式时才生效,正常跑测试的时候完全没起作用!
我把自己写的部分代码贴出来,大家帮我瞅瞅哪里可能出问题了:
generatedID := uuid.New() logrus.SetLevel(logrus.DebugLevel) logrus.Debugf("reference ID: %+v", generatedID) uuidPatch, err := mpatch.PatchMethod(uuid.New, func() uuid.UUID { return generatedID }) if err != nil { logrus.Fatalf("补丁创建失败: %v", err) } // 我也加了defer uuidPatch.Unpatch(),但还是没用
我实在搞不懂为啥一开调试日志补丁就正常工作,关掉就不行。会不会是Go编译器的优化把uuid.New()的调用给内联了,导致补丁没命中?还是我用mpatch的方式有啥错误?有没有遇到过类似问题的朋友给我支支招呀?
备注:内容来源于stack exchange,提问作者pizhlo
相关产品推荐
相关产品推荐

