如何在 golang 的 go.mod 中正确使用递归替换?
在使用golang的go.mod时,正确使用递归替换是一个重要的问题。php小编鱼仔为您提供了一些解决方案。递归替换是指在go.mod文件中将某个模块替换为本地目录的方式,以便在开发过程中进行调试和修改。但是,如果替换的模块依赖其他模块,可能会导致一些问题。通过正确使用递归替换,您可以避免这些问题,保证项目的依赖关系正常运行。在本文中,我们将讨论如何在go.mod中正确使用递归替换,并提供一些实用的技巧和注意事项。
问题内容
我想要一个项目结构,如下所示:
src/github.com/myname/myproject/ - tl: - constructor - someghing.go - go.mod: module github.com/myname/myproject/tl/constructor require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 require github.com/myname/myproject/tl/types/account v0.0.0 require github.com/myname/myproject/tl/types/auth v0.0.0 require github.com/myname/myproject/tl/types/bots v0.0.0 replace github.com/myname/myproject v0.0.0 => ./../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../types replace github.com/myname/myproject/tl/types/account v0.0.0 => ./../types/account replace github.com/myname/myproject/tl/types/auth v0.0.0 => ./../types/auth replace github.com/myname/myproject/tl/types/channels v0.0.0 => ./../types/channels - crcs - someghing.go - go.mod: module github.com/myname/myproject/tl/crcs - functions - account - someghing.go - go.mod: module github.com/myname/myproject/tl/functions/account require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../../types - auth - someghing.go - go.mod: module github.com/myname/myproject/tl/functions/auth require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../../types - bots - someghing.go - go.mod: module github.com/myname/myproject/tl/functions/bots require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../../types - someghing.go - go.mod: module github.com/myname/myproject/tl/functions require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../crcs replace github.com/myname/myproject v0.0.0 => ./../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./../types - types - account - something.go - go.mod: module github.com/myname/myproject/tl/types/account require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./.. - auth - something.go - go.mod: module github.com/myname/myproject/tl/types/auth require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./.. - channels - something.go - go.mod: module github.com/myname/myproject/tl/types/channels require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../../crcs replace github.com/myname/myproject v0.0.0 => ./../../.. replace github.com/myname/myproject/tl/types v0.0.0 => ./.. - someghing.go - go.mod: module github.com/myname/myproject/tl/types require github.com/myname/myproject/tl/crcs v0.0.0 require github.com/myname/myproject v0.0.0 replace github.com/myname/myproject/tl/crcs v0.0.0 => ./../crcs replace github.com/myname/myproject v0.0.0 => ./../.. - something.go - go.mod: module github.com/myname/myproject [some external dependencies] require github.com/myname/myproject/tl/types v0.0.0 replace github.com/myname/myproject/l/types v0.0.0 => ./tl/types登录后复制