<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Go on Dev &amp; Platform Engineering Hub</title><link>https://rhidayat.work/topics/go/</link><description>Recent content in Go on Dev &amp; Platform Engineering Hub</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Rachmat Hidayat</copyright><lastBuildDate>Sun, 09 Aug 2026 19:00:00 +0000</lastBuildDate><atom:link href="https://rhidayat.work/topics/go/index.xml" rel="self" type="application/rss+xml"/><item><title>Crossplane Ep 11: Writing Composition Functions in Go</title><link>https://rhidayat.work/series/crossplane/advanced/11-writing-composition-functions-in-go/</link><pubDate>Sun, 09 Aug 2026 19:00:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/advanced/11-writing-composition-functions-in-go/</guid><description>In Episode 10, we learned that Composition Functions allow us to escape the limitations of YAML. In this episode, we will write a custom Go program that dynamically generates an array of AWS Subnets based on a single integer provided by the Application Developer.</description></item><item><title>Go Ep 15: Building a Production REST API</title><link>https://rhidayat.work/series/go/15-building-a-production-rest-api/</link><pubDate>Sun, 09 Aug 2026 10:20:00 +0000</pubDate><guid>https://rhidayat.work/series/go/15-building-a-production-rest-api/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Theory is useless without execution. We assemble everything learned across 14 episodes — structs, pointers, error handling, JSON codecs, context timeouts, and concurrency — into a production-grade HTTP REST API.
&lt;/div&gt;</description></item><item><title>Go Ep 14: Testing, Benchmarking &amp; Fuzzing</title><link>https://rhidayat.work/series/go/14-unit-testing-benchmarking-fuzzing/</link><pubDate>Sun, 09 Aug 2026 10:10:00 +0000</pubDate><guid>https://rhidayat.work/series/go/14-unit-testing-benchmarking-fuzzing/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Go includes a first-class test runner built into the &lt;code&gt;go test&lt;/code&gt; CLI. You don&amp;rsquo;t need external test frameworks like Jest or JUnit to write unit tests, benchmarks, or fuzzers.
&lt;/div&gt;</description></item><item><title>Go Ep 13: Generics (Type Parameters)</title><link>https://rhidayat.work/series/go/13-generics-in-go/</link><pubDate>Sun, 09 Aug 2026 10:00:00 +0000</pubDate><guid>https://rhidayat.work/series/go/13-generics-in-go/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Before Go 1.18, writing a reusable function for finding a slice element required duplicate functions for &lt;code&gt;int&lt;/code&gt;, &lt;code&gt;string&lt;/code&gt;, and &lt;code&gt;float64&lt;/code&gt;, or using reflection. &lt;strong&gt;Generics&lt;/strong&gt; solve this using Type Parameters.
&lt;/div&gt;</description></item><item><title>Go Ep 12: Context, Cancellation &amp; Timeouts</title><link>https://rhidayat.work/series/go/12-context-cancellation-and-timeouts/</link><pubDate>Sun, 09 Aug 2026 09:50:00 +0000</pubDate><guid>https://rhidayat.work/series/go/12-context-cancellation-and-timeouts/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 When an incoming HTTP request is cancelled by the client, every downstream database query and RPC call associated with that request must stop immediately. Go&amp;rsquo;s &lt;strong&gt;&lt;code&gt;context.Context&lt;/code&gt;&lt;/strong&gt; enforces this cancellation propagation.
&lt;/div&gt;</description></item><item><title>Go Ep 11: Advanced Concurrency &amp; Worker Pools</title><link>https://rhidayat.work/series/go/11-advanced-concurrency-patterns/</link><pubDate>Sun, 09 Aug 2026 09:40:00 +0000</pubDate><guid>https://rhidayat.work/series/go/11-advanced-concurrency-patterns/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Channel communication handles message passing, but shared memory synchronization requires standard primitives like &lt;code&gt;sync.Mutex&lt;/code&gt; and &lt;code&gt;sync.WaitGroup&lt;/code&gt;. Learn how to build thread-safe concurrent systems.
&lt;/div&gt;</description></item><item><title>Go Ep 10: Goroutines &amp; Channel Basics</title><link>https://rhidayat.work/series/go/10-goroutines-and-channels-basics/</link><pubDate>Sun, 09 Aug 2026 09:30:00 +0000</pubDate><guid>https://rhidayat.work/series/go/10-goroutines-and-channels-basics/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Do not communicate by sharing memory; instead, share memory by communicating. Goroutines and Channels form the core primitives of Go&amp;rsquo;s concurrency model.
&lt;/div&gt;</description></item><item><title>Go Ep 9: Implicit Interfaces &amp; Polymorphism</title><link>https://rhidayat.work/series/go/09-interfaces-and-polymorphism/</link><pubDate>Sun, 09 Aug 2026 09:10:00 +0000</pubDate><guid>https://rhidayat.work/series/go/09-interfaces-and-polymorphism/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 If it walks like a duck and quacks like a duck, Go treats it like a duck. Interfaces in Go are satisfied implicitly, creating loose coupling and high testability across packages.
&lt;/div&gt;</description></item><item><title>Go Ep 8: Methods &amp; Struct Composition</title><link>https://rhidayat.work/series/go/08-methods-and-struct-embedding/</link><pubDate>Sun, 09 Aug 2026 09:00:00 +0000</pubDate><guid>https://rhidayat.work/series/go/08-methods-and-struct-embedding/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Go favors &lt;strong&gt;Composition over Inheritance&lt;/strong&gt;. By embedding structs inside other structs, you automatically promote fields and methods without the rigid coupling of object-oriented class hierarchies.
&lt;/div&gt;</description></item><item><title>Go Ep 7: Pointers &amp; Memory Allocation</title><link>https://rhidayat.work/series/go/07-pointers-and-memory-allocation/</link><pubDate>Sun, 09 Aug 2026 08:50:00 +0000</pubDate><guid>https://rhidayat.work/series/go/07-pointers-and-memory-allocation/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Go is a pass-by-value language. When you pass an argument to a function, Go creates a copy. Pointers allow you to share memory directly across function boundaries without copying large data structures.
&lt;/div&gt;</description></item><item><title>Go Ep 6: Structs, Fields &amp; JSON Serialization</title><link>https://rhidayat.work/series/go/06-structs-fields-and-json-tags/</link><pubDate>Sun, 09 Aug 2026 08:45:00 +0000</pubDate><guid>https://rhidayat.work/series/go/06-structs-fields-and-json-tags/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Go is not a class-based object-oriented language. Instead, Go uses &lt;strong&gt;Structs&lt;/strong&gt; to group typed fields together into contiguous memory blocks.
&lt;/div&gt;</description></item><item><title>Go Ep 5: Maps &amp; Hash Tables</title><link>https://rhidayat.work/series/go/05-maps-and-hash-tables/</link><pubDate>Sun, 09 Aug 2026 08:40:00 +0000</pubDate><guid>https://rhidayat.work/series/go/05-maps-and-hash-tables/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Maps provide fast $O(1)$ key-value lookups. Understanding map initialization and comma-ok lookups is essential for safe data manipulation.
&lt;/div&gt;</description></item><item><title>Go Ep 4: Arrays, Slices &amp; Memory Capacity</title><link>https://rhidayat.work/series/go/04-arrays-slices-and-capacity/</link><pubDate>Sun, 09 Aug 2026 08:30:00 +0000</pubDate><guid>https://rhidayat.work/series/go/04-arrays-slices-and-capacity/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 In Go, an &lt;strong&gt;Array&lt;/strong&gt; has a fixed length determined at compile time. A &lt;strong&gt;Slice&lt;/strong&gt; is a lightweight, dynamically sized view into an underlying array. Understanding slice capacity (&lt;code&gt;cap&lt;/code&gt;) prevents accidental memory reallocation overhead.
&lt;/div&gt;</description></item><item><title>Go Ep 3: Functions, Defer &amp; Closures</title><link>https://rhidayat.work/series/go/03-functions-defer-and-closures/</link><pubDate>Sun, 09 Aug 2026 08:20:00 +0000</pubDate><guid>https://rhidayat.work/series/go/03-functions-defer-and-closures/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Functions in Go can return multiple values natively. Coupled with the &lt;strong&gt;&lt;code&gt;defer&lt;/code&gt;&lt;/strong&gt; statement, Go provides a clean, elegant mechanism for resource management that replaces cumbersome &lt;code&gt;try/finally&lt;/code&gt; blocks.
&lt;/div&gt;</description></item><item><title>Go Ep 2: Control Flow &amp; Loops</title><link>https://rhidayat.work/series/go/02-control-structures-and-loops/</link><pubDate>Sun, 09 Aug 2026 08:10:00 +0000</pubDate><guid>https://rhidayat.work/series/go/02-control-structures-and-loops/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Unlike languages with &lt;code&gt;while&lt;/code&gt;, &lt;code&gt;do-while&lt;/code&gt;, and &lt;code&gt;foreach&lt;/code&gt;, Go has only ONE keyword for looping: &lt;strong&gt;&lt;code&gt;for&lt;/code&gt;&lt;/strong&gt;. This design eliminates syntax complexity while maintaining complete control over iteration.
&lt;/div&gt;</description></item><item><title>Go Ep 1: Toolchain, Syntax &amp; Primitive Types</title><link>https://rhidayat.work/series/go/01-introduction-syntax-variables-types/</link><pubDate>Sun, 09 Aug 2026 08:00:00 +0000</pubDate><guid>https://rhidayat.work/series/go/01-introduction-syntax-variables-types/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson, Go (Golang) is an open-source programming language built for simplicity, concurrency, and high-performance systems engineering.
&lt;/div&gt;</description></item></channel></rss>