But for me, the point number 2 is applicabale in every language.
The reason Go does not enforce any structure is mainly because Go is being used in various use cases and is not just for web application. Also, Go is a procedural language so strict OOP oriented project structure won’t work effectively here.
Then, it’s up to you to implement MTC, MVVM, or whatever structure best suited for your requirements.
For standardized coding conventions, check out https://github.com/golangci/golangci-lint where it provides codes checking and a number of great linting (e.g.
gosec for security).
Great job ramping up! Enjoy Go programming.