Breaking down problems into sub-problems in Go

Image for post
Image for post


Dynamic programming can be thought of as a way of breaking a complex problem into sub-problems, solving each of these sub-problems once, and saving the solutions for later use. As we’ll see later in this article, this approach offers efficiency and modularity benefits over other approaches, which we’ll explore shortly.

Dynamic Programming Techniques

When we talk about dynamic programming, we must also discuss the following techniques:

  • Memoization: Not to be confused with Memorization, Memoization is a technique for improving the performance of a recursive function/algorithm. …

Learn the difference so you don’t make costly mistakes

Image for post
Image for post
Photo by Nick Fewings on Unsplash


Many programming languages support passing an argument by value and/or by reference. In this article, we’re going to learn how Go's function handles passed arguments.

What is Pass-By-Value?

In Go, when a parameter is passed to a function by value, it means the parameter is copied into another location of your memory. When accessing or modifying the variable within your function, only the copy is accessed or modified — the original value is never modified. All primitive/basic types (int and its variants, float and its variants, boolean, string, array, and struct) in Go are passed by value. Passing by value is usually how…

Better logging, better debugging

Image for post
Image for post
Photo by William Iven on Unsplash


Many companies are betting on Go due to its composability, scalability, and concurrency — along with other super interesting features.

Simple web services and microservice applications require a well-considered logging strategy to help us understand user behavior, localize errors, and monitor the performance of our applications.

In this article, we’re going to explore tracing, metrics, and logging. Logging, in particular, will receive the highest focus.


What’s tracing?

Tracing covers a wider and more continuous view of an application than logging does. The main reason for implementing tracing is to enable the overseeing of the application’s flow and data progression in and out…

Adeshina H. Hassan

Bilingual || Software Engineer || co-organizer @GolangNigeria #golang #flutter Twitter Handle: @adeshinaHH Personal Website:

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store