Benchmarking in Go, with Example
· β˜• 3 min read
Introduction From The Zen of Go: If you think it’s slow, first prove it with a benchmark Don’t assume if things are slow. Benchmark it and see if they are really slow. One thing to note here is benchmarking a program is different from profiling a program. Benchmarking is the way we check how fast our algorithm is for a given unit of the program. In benchmarking, we typically see how many iterations can a piece of code can run in a given time.

Optional Parameters Using Option Struct
· β˜• 5 min read
Introduction In last post we learned how we can use functional options to pass parameter to our functions. In this post we’ll see an alternative way to do the same thing. I’ll take the same code from the last post to keep things simple. Variadic Functions for Options 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 type Coffee struct { CoffeeBeans bool Sugar bool SteamedMilk bool } func New(opts .

Optional Parameters using Functional Options
· β˜• 5 min read
Introduction In Python you can assign default value to the functions, like so: 1 2 def my_func(posarg, named_arg=True, another_named_arg="Okay") # logic goes here... But in Go you can’t do this: 1 2 3 func myFunc(posarg, named_arg bool = true, another_named_arg string = "Okay") { // logic goes here... } This will throw a syntax error. Try that? In this post, we’ll see how can we overcome this issue the go way, with something called Function Options.

Sending POST Request in Go with a Body
· β˜• 3 min read
Introduction Send a POST request in golang is pretty daunting if you have a post body and you’re coming from a scripting language like JavaScript or Python. Here in Go, schema for JSON needs to be defined beforehand in order to marshal and unmarshal string back and forth to JSON. Simple POST This marshaling/unmarshalling could be an oneliner if your request body is not nested, or is one level deep, or there is not even a body.

WebAssembly with Go
· β˜• 6 min read
I will start this post with a quote from webassembly.org: WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications. webassembly.org blockquote p { padding: 15px 15px 0; } That’s a lot of technical jargon. In very simple terms,

Introduction to BoltDB
· β˜• 5 min read
Why use BoltDB Bolt plays pretty well with Go’s concurrency model, we can do multiple reads concurrently. For pro and cons, I will contrast it with similar database SQLite. I have done SQLite when I worked with Xentrix to develop GUI tools for the artists. Pro It is native go. This means you don’t need any database server running, like SQLite. In oppose to Redis and memcached. Cross-compilation One thing I see a lot appearing on the internet about Bolt is it’s an ability to cross-compile.

Unit Testing, Test Coverage and CI with Travis in Go
· β˜• 7 min read
You can’t think of deploying your application to production without testing it. Neither you can manage a large codebase with confidence without it. Let us go through some basics of unit testing in golang. This post is structured in the following manner: unit testing basics in golang (jump) inbuilt code coverage command understanding subtests and helper function (jump) Travis CI integration (jump) running test against multiple version of go Unit Testing in golang Before I start, I must say that do not test code, test the behavior.