Skip to content

Instantly share code, notes, and snippets.

@timkendall
Created December 26, 2017 18:23
Show Gist options
  • Select an option

  • Save timkendall/f40f1aeabe1eecd44014ed9b65122103 to your computer and use it in GitHub Desktop.

Select an option

Save timkendall/f40f1aeabe1eecd44014ed9b65122103 to your computer and use it in GitHub Desktop.

Here are some of my initial thoughts on Go (a very popular language right now). Still need to spend some time actually developing non-trivial applications with it.

Thoughts on Go

Likes

  • Simple, small, stable syntax
  • Strongly typed, compiled
  • Awesome, modern concurrency + parrallelism
  • No classes
  • Interfaces
  • Exports by convention (i.e functions starting with capital letters)
  • First-class functions with defer statements (i.e run stuff after function exits
  • Unique approach to declaring methods on custom types
  • Packages, encourages separation of concerns and thinking of application parts as "microservices"

Dislikes

  • Community philosophy around packages (i.e want you to copy/paste)
  • No good package manager/ecosystem (i.e just have to install from GitHub repo and hope the authors don't take it down or changes stuff)
  • No pattern matching
  • Documentation for 3rd-party libraries is usually ugly and bad
  • Seems like style is very procedural
  • Ugly string interpolation
  • No immutability
  • Channel creation is kinda clumsy
  • "Moving from Ruby to Go sometimes feels like ignoring 20 years of progress made in language design"

Undecided

  • No exceptions, forced to handle errors immediately
    • Leads to very procedural code
  • No generics
@timkendall
Copy link
Author

Should also note how much I like it being primarily focused on just types + functions 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment