<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Best Practices on A Blog for the Uninitialized</title><link>https://www.nilpointer.blog/tags/best-practices/</link><description>Recent content in Best Practices on A Blog for the Uninitialized</description><generator>Hugo</generator><language>en-us</language><copyright>&lt;a href="https://www.apache.org/licenses/LICENSE-2.0" target="_blank" rel="noopener"&gt;Licensed under Apache 2.0&lt;/a&gt;</copyright><lastBuildDate>Wed, 25 Feb 2026 16:40:18 -0800</lastBuildDate><atom:link href="https://www.nilpointer.blog/tags/best-practices/index.xml" rel="self" type="application/rss+xml"/><item><title>Golang's unbuffered and buffered channels</title><link>https://www.nilpointer.blog/posts/2026/02/golangs-unbuffered-and-buffered-channels/</link><pubDate>Wed, 25 Feb 2026 16:40:18 -0800</pubDate><guid>https://www.nilpointer.blog/posts/2026/02/golangs-unbuffered-and-buffered-channels/</guid><description>&lt;p&gt;From the &lt;a href="https://go.dev/blog/codelab-share"
 
 
 target="_blank" 
 rel="noopener noreferrer"
 
&gt;official Go Blog&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Do not communicate by sharing memory; instead, share memory by communicating.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They&amp;rsquo;re awesome because they enable concurrency support &amp;ldquo;out of the box&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;They&amp;rsquo;re basically their own type that implements concurrent safe logic of sharing memory locations of data without the explicit usage of mutexes or locks. The example in the blog link above has some code blocks that show this quite well, actually.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;They can be buffered or unbuffered.&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>