You might have heard of gRPC by now, a new RPC system that is quickly taking on JSON/HTTP as the recommended way to communicate between microservices. Its main selling points are well-defined schemas via Protocol Buffers 3, automatic client code generation for 10 different languages and bi-directional streaming. While gRPC has first class Go support and a stable release of has just been announced, the documentation is still a bit lacking, and it can be unclear how to do some things coming fro...| on Texlution Blog
Disclaimer: This is not a getting started guide. I've only played with the language and I'm by no means an expert, so take what I write with a grain of salt. My goal is to condense the highlights of a few hours in research into something you can consume in a few minutes to help you decide if Elixir could be of any interest to you. What is Elixir Soft immutability Pattern matching Atoms Processes vs Goroutines Supervisors Structs and Protocols The pipe |> operator Macros Standard library and t...| on Texlution Blog
Not everything in Go is unicorns and rainbows, like every other language, it has its gotchas. For me personally, the worst of all is nil checking, because while being aware of it, I still get bitten sometimes. If you have been programming in Go long enough, you probably know by now that nil values do not always equal nil. Francesc Campoy talked about it at dotGo 2014. If you want to know if you really get it, I’d challenge you to answer the following quiz by writing down if each of the foll...| on Texlution Blog
Earlier this week, I had the privilege of attending to an sneak preview of Andrew Gerrand’s talk “Stupid Gopher Tricks”, which he should be presenting at the Golang UK conference as I publish these lines. It’s a great talk about lesser-known Go features. I won’t spoil his talk here, you should instead attend the next conference if you can or check out the slides once they become available. But there was one element in the talk that caught particularly my attention. atomic.Value. Whi...| on Texlution Blog
TL;DR Source code and self-explanatory screenshot: https://github.com/comail/colog The Go team made a conscious decision of not including a leveled log (debug, info, warning, etc.) solution in the standard library. Lots of people have an opinion of how logging should be done and logging libraries are fairly trivial to create, so even if they released the internal library used at Google it did non prevent logging libraries to pop up like mushrooms. Although not a de facto standard, perhaps the...| on Texlution Blog
One of the features that has contributed to Go’s steady growth is the extremely friendly and minimalistic approach to package management via “go get”. Extreme simplicity however, does not come without limitations. Amongst other problems, having URLs as import paths makes your imported packages subject to link rot. The upcoming shutdown of google code for example, will soon render hundreds of import paths obsolete. You should, of course, vendor your external dependences, and the Go team ...| on Texlution Blog
Introduction to gorename, the type-aware renaming tool for Go source| texlution.com
Golang was explicitly engineered to streamline projects built by large groups of programmers with different skill levels, and there is no larger such group than the open source community.| texlution.com