Kontakt

The Go Programming Language

golang.org

Go is a lightweight programming language, which we especially like to use for implementing high scalability and performance-critical parts of our applications. As we have used it in numerous projects, we recommend to ADOPT it.

Benefits

  • creates statically compiled binaries by default (which are extremely easy to distribute)
  • cross-compilation to different platforms is very easily possible
  • has a great standard libary
  • supports parallelization of work using goroutines
  • is very fast and light on resources

Drawbacks

  • I personally (Sebastian) think the concept of gopath and the go workspace folder is not good, as it might lead to non-reproducible builds when having many different projects.
  • there is no official/standard way of doing dependency versioning. We have used glide in the past, though dep seems to become the new de-facto standard.
  • is a garbage collected language, so there exist GC pauses. However, we did never experience any problems in our kinds of applications yet.

Alternatives

  • rust is a systems programming language with very unique concepts, leading to memory safety without a garbage collector. I'd try to learn Rust generally as a replacement to C; while I see Go as a little more high level. Thus, I'm rating rust as ASSESS.

Resources