Virtualgo (or vg for short) is a tool that provides workspace-based development for Go. The main feature set that makes it better than other solutions. Virtualgo doesn't do dependency resolution or version pinning itself, because this is a hard problem that's already being solved by other tools. Its approach is to build on top of these tools, such as dep, to provide the features features listed above. For people coming from Python, vg is very similar to virtualenv, with dep being respective to pip. The main difference is that vg is much easier to use than virtualenv, because there's almost no mental overhead in using vg. You can pin versions of executable dependencies, such as linting and code generation tools. You can easily use a dependency from your global GOPATH inside your workspace, without running into confusing import errors. It has optional full isolation. If enabled there's no accidental fallbacks to regular GOPATH.
Features
- Extreme ease of use
- No interference with other go tools
- Version pinning for imports
- Version pinning for executables, such as linters (e.g. errcheck) and codegen tools (e.g. protoc-gen-go)
- Importing a dependency that's locally checked out outside of the workspace (also called multi project workflow)
- Optional full isolation for imports, see the section on import modes for details.