Managing dependencies in go used to be a mess. There were about 3-4 widely used packages to manage dependencies, which sometimes made it weird to work on another codebase that used a different dependency management tool. Finally, in 1.11, go included its own dependency management tool called go modules.
Despite not having Object-Oriented Programming (OOP) language features, Go does have interfaces. Interfaces allow you to interchange what data types you are passing as arguments to a function, as long as that type has the required methods. Interfaces in Go are different compared to, say, C# or Java, in that