<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Go on Jake Worth</title><link>https://jakeworth.com/tags/go/</link><description>Recent content in Go on Jake Worth</description><image><title>Jake Worth</title><url>https://jakeworth.com/twittercard.png</url><link>https://jakeworth.com/twittercard.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 25 Sep 2015 08:04:38 -0500</lastBuildDate><atom:link href="https://jakeworth.com/tags/go/index.xml" rel="self" type="application/rss+xml"/><item><title>Seeding Golang's Rand</title><link>https://jakeworth.com/tils/seeding-golangs-rand/</link><pubDate>Fri, 25 Sep 2015 08:04:38 -0500</pubDate><guid>https://jakeworth.com/tils/seeding-golangs-rand/</guid><description>&lt;p&gt;&amp;lsquo;Random&amp;rsquo; numbers in Go don&amp;rsquo;t always seem random. This is because the &lt;code&gt;rand&lt;/code&gt; package defaults to a seed of 1.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s great if you need a bunch of random numbers at the start of your program. Not great if you expect a different outcome each time you run the program.&lt;/p&gt;
&lt;p&gt;A solution is to seed &lt;code&gt;rand&lt;/code&gt; with Unix time. Try it in the &lt;code&gt;init()&lt;/code&gt; function:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;package&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;math/rand&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;init&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;rand&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Seed&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;time&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Now&lt;/span&gt;().&lt;span style="color:#a6e22e"&gt;UTC&lt;/span&gt;().&lt;span style="color:#a6e22e"&gt;UnixNano&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Go iota</title><link>https://jakeworth.com/tils/go-iota/</link><pubDate>Thu, 17 Sep 2015 13:24:16 -0500</pubDate><guid>https://jakeworth.com/tils/go-iota/</guid><description>&lt;p&gt;Go has an interesting feature called &lt;code&gt;iota&lt;/code&gt;. When declaring a list of constants, this keyword represents successive untyped integer constants.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;foo&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;iota&lt;/span&gt; &lt;span style="color:#75715e"&gt;// foo == 0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;bar&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;iota&lt;/span&gt; &lt;span style="color:#75715e"&gt;// bar == 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;baz&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;iota&lt;/span&gt; &lt;span style="color:#75715e"&gt;// baz == 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anytime &lt;code&gt;const&lt;/code&gt; is invoked, the counter resets.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;foo&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;iota&lt;/span&gt; &lt;span style="color:#75715e"&gt;// foo == 0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;bar&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;iota&lt;/span&gt; &lt;span style="color:#75715e"&gt;// bar == 0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is a cool way to quickly define a list of integer constants, such as &amp;rsquo;true&amp;rsquo; and &amp;lsquo;false&amp;rsquo;, for later use.&lt;/p&gt;</description></item></channel></rss>