Update chroma from v0.8 to v2 (v2.8.0) and fix up formatting

This commit is contained in:
Eli Bendersky 2023-08-21 07:05:01 -07:00
parent d51586e6bf
commit 4dc83f3ccc
83 changed files with 2673 additions and 3882 deletions

5
go.mod
View File

@ -3,7 +3,7 @@ module github.com/mmcgrana/gobyexample
go 1.21 go 1.21
require ( require (
github.com/alecthomas/chroma v0.8.2 github.com/alecthomas/chroma/v2 v2.8.0
github.com/aws/aws-sdk-go-v2 v1.9.0 github.com/aws/aws-sdk-go-v2 v1.9.0
github.com/aws/aws-sdk-go-v2/config v1.7.0 github.com/aws/aws-sdk-go-v2/config v1.7.0
github.com/aws/aws-sdk-go-v2/service/s3 v1.14.0 github.com/aws/aws-sdk-go-v2/service/s3 v1.14.0
@ -20,6 +20,5 @@ require (
github.com/aws/aws-sdk-go-v2/service/sso v1.4.0 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.4.0 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.7.0 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.7.0 // indirect
github.com/aws/smithy-go v1.8.0 // indirect github.com/aws/smithy-go v1.8.0 // indirect
github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 // indirect github.com/dlclark/regexp2 v1.10.0 // indirect
github.com/dlclark/regexp2 v1.2.0 // indirect
) )

37
go.sum
View File

@ -1,12 +1,9 @@
github.com/alecthomas/assert v0.0.0-20170929043011-405dbfeb8e38 h1:smF2tmSOzy2Mm+0dGI2AIUHY+w0BUc+4tn40djz7+6U= github.com/alecthomas/assert/v2 v2.2.1 h1:XivOgYcduV98QCahG8T5XTezV5bylXe+lBxLG2K2ink=
github.com/alecthomas/assert v0.0.0-20170929043011-405dbfeb8e38/go.mod h1:r7bzyVFMNntcxPZXK3/+KdruV1H5KSlyVY0gc+NgInI= github.com/alecthomas/assert/v2 v2.2.1/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ=
github.com/alecthomas/chroma v0.8.2 h1:x3zkuE2lUk/RIekyAJ3XRqSCP4zwWDfcw/YJCuCAACg= github.com/alecthomas/chroma/v2 v2.8.0 h1:w9WJUjFFmHHB2e8mRpL9jjy3alYDlU0QLDezj1xE264=
github.com/alecthomas/chroma v0.8.2/go.mod h1:sko8vR34/90zvl5QdcUdvzL3J8NKjAUx9va9jPuFNoM= github.com/alecthomas/chroma/v2 v2.8.0/go.mod h1:yrkMI9807G1ROx13fhe1v6PN2DDeaR73L3d+1nmYQtw=
github.com/alecthomas/colour v0.0.0-20160524082231-60882d9e2721 h1:JHZL0hZKJ1VENNfmXvHbgYlbUOvpzYzvy2aZU5gXVeo= github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk=
github.com/alecthomas/colour v0.0.0-20160524082231-60882d9e2721/go.mod h1:QO9JBoKquHd+jz9nshCh40fOfO+JzsoXy8qTHF68zU0= github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/alecthomas/kong v0.2.4/go.mod h1:kQOmtJgV+Lb4aj+I2LEn40cbtawdWJ9Y8QLq+lElKxE=
github.com/alecthomas/repr v0.0.0-20180818092828-117648cd9897 h1:p9Sln00KOTlrYkxI1zYWl1QLnEqAqEARBEYa8FQnQcY=
github.com/alecthomas/repr v0.0.0-20180818092828-117648cd9897/go.mod h1:xTS7Pm1pD1mvyM075QCDSRqH6qRLXylzS24ZTpRiSzQ=
github.com/aws/aws-sdk-go-v2 v1.9.0 h1:+S+dSqQCN3MSU5vJRu1HqHrq00cJn6heIMU7X9hcsoo= github.com/aws/aws-sdk-go-v2 v1.9.0 h1:+S+dSqQCN3MSU5vJRu1HqHrq00cJn6heIMU7X9hcsoo=
github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
github.com/aws/aws-sdk-go-v2/config v1.7.0 h1:J2cZ7qe+3IpqBEXnHUrFrOjoB9BlsXg7j53vxcl5IVg= github.com/aws/aws-sdk-go-v2/config v1.7.0 h1:J2cZ7qe+3IpqBEXnHUrFrOjoB9BlsXg7j53vxcl5IVg=
@ -31,34 +28,20 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.7.0 h1:1at4e5P+lvHNl2nUktdM2/v+rpICg
github.com/aws/aws-sdk-go-v2/service/sts v1.7.0/go.mod h1:0qcSMCyASQPN2sk/1KQLQ2Fh6yq8wm0HSDAimPhzCoM= github.com/aws/aws-sdk-go-v2/service/sts v1.7.0/go.mod h1:0qcSMCyASQPN2sk/1KQLQ2Fh6yq8wm0HSDAimPhzCoM=
github.com/aws/smithy-go v1.8.0 h1:AEwwwXQZtUwP5Mz506FeXXrKBe0jA8gVM+1gEcSRooc= github.com/aws/smithy-go v1.8.0 h1:AEwwwXQZtUwP5Mz506FeXXrKBe0jA8gVM+1gEcSRooc=
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 h1:y5HC9v93H5EPKqaS1UYVg1uYah5Xf51mBfIoWehClUQ=
github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964/go.mod h1:Xd9hchkHSWYkEqJwUGisez3G1QY8Ryz0sdWrLPMGjLk=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0=
github.com/dlclark/regexp2 v1.2.0 h1:8sAhBGEM0dRWogWqWyQeIJnxjWO6oIjl8FKqREDsGfk= github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200413165638-669c56c373c4 h1:opSr2sbRXk5X5/givKrrKj9HXxFpW2sdCiP8MJSKLQY=
golang.org/x/sys v0.0.0-20200413165638-669c56c373c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

66
public/arrays generated
View File

@ -45,8 +45,7 @@ scenarios.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/bBVikSoZ1Z7"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/bBVikSoZ1Z7"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,8 +55,7 @@ scenarios.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -67,8 +65,7 @@ scenarios.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -82,10 +79,8 @@ zero-valued, which for <code>int</code>s means <code>0</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">a</span> <span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="kt">int</span>
<span class="kd">var</span> <span class="nx">a</span> <span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;emp:&#34;</span><span class="p">,</span> <span class="nx">a</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;emp:&#34;</span><span class="p">,</span> <span class="nx">a</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -98,11 +93,9 @@ zero-valued, which for <code>int</code>s means <code>0</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">a</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="p">=</span> <span class="mi">100</span>
<span class="nx">a</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="p">=</span> <span class="mi">100</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;set:&#34;</span><span class="p">,</span> <span class="nx">a</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;set:&#34;</span><span class="p">,</span> <span class="nx">a</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;get:&#34;</span><span class="p">,</span> <span class="nx">a</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;get:&#34;</span><span class="p">,</span> <span class="nx">a</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
</pre>
</td> </td>
</tr> </tr>
@ -113,9 +106,7 @@ zero-valued, which for <code>int</code>s means <code>0</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">a</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">a</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -127,10 +118,8 @@ in one line.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">b</span> <span class="o">:=</span> <span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">}</span>
<span class="nx">b</span> <span class="o">:=</span> <span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;dcl:&#34;</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;dcl:&#34;</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -143,16 +132,14 @@ structures.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">twoD</span> <span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span><span class="kt">int</span>
<span class="kd">var</span> <span class="nx">twoD</span> <span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span><span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">2</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">2</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="p">&lt;</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="p">&lt;</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">twoD</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span> <span class="p">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="nx">j</span>
<span class="nx">twoD</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span> <span class="p">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="nx">j</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;2d: &#34;</span><span class="p">,</span> <span class="nx">twoD</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;2d: &#34;</span><span class="p">,</span> <span class="nx">twoD</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -168,14 +155,13 @@ when printed with <code>fmt.Println</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run arrays.go
<span class="gp">$</span> go run arrays.go </span></span><span class="line"><span class="cl"><span class="go">emp: [0 0 0 0 0]
<span class="go">emp: [0 0 0 0 0] </span></span></span><span class="line"><span class="cl"><span class="go">set: [0 0 0 0 100]
</span><span class="go">set: [0 0 0 0 100] </span></span></span><span class="line"><span class="cl"><span class="go">get: 100
</span><span class="go">get: 100 </span></span></span><span class="line"><span class="cl"><span class="go">len: 5
</span><span class="go">len: 5 </span></span></span><span class="line"><span class="cl"><span class="go">dcl: [1 2 3 4 5]
</span><span class="go">dcl: [1 2 3 4 5] </span></span></span><span class="line"><span class="cl"><span class="go">2d: [[0 1 2] [1 2 3]]</span></span></span></code></pre>
</span><span class="go">2d: [[0 1 2] [1 2 3]]</span></pre>
</td> </td>
</tr> </tr>

62
public/atomic-counters generated
View File

@ -47,8 +47,7 @@ counters</em> accessed by multiple goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/j-14agntvEO"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/j-14agntvEO"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -58,12 +57,11 @@ counters</em> accessed by multiple goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;sync&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;sync&#34;</span>
<span class="s">&#34;sync/atomic&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;sync/atomic&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -73,8 +71,7 @@ counters</em> accessed by multiple goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -86,9 +83,7 @@ counters</em> accessed by multiple goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">ops</span> <span class="kt">uint64</span></span></span></code></pre>
<span class="kd">var</span> <span class="nx">ops</span> <span class="kt">uint64</span>
</pre>
</td> </td>
</tr> </tr>
@ -100,9 +95,7 @@ to finish their work.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">wg</span> <span class="nx">sync</span><span class="p">.</span><span class="nx">WaitGroup</span></span></span></code></pre>
<span class="kd">var</span> <span class="nx">wg</span> <span class="nx">sync</span><span class="p">.</span><span class="nx">WaitGroup</span>
</pre>
</td> </td>
</tr> </tr>
@ -114,10 +107,8 @@ counter exactly 1000 times.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">50</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">50</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">wg</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span></span></span></code></pre>
<span class="nx">wg</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -131,9 +122,8 @@ address of our <code>ops</code> counter with the
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">c</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">c</span> <span class="p">&lt;</span> <span class="mi">1000</span><span class="p">;</span> <span class="nx">c</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">c</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">c</span> <span class="p">&lt;</span> <span class="mi">1000</span><span class="p">;</span> <span class="nx">c</span><span class="o">++</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -143,12 +133,11 @@ address of our <code>ops</code> counter with the
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">atomic</span><span class="p">.</span><span class="nf">AddUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">ops</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">atomic</span><span class="p">.</span><span class="nf">AddUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">ops</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="nx">wg</span><span class="p">.</span><span class="nf">Done</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">wg</span><span class="p">.</span><span class="nf">Done</span><span class="p">()</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -159,9 +148,7 @@ address of our <code>ops</code> counter with the
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">wg</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span></span></span></code></pre>
<span class="nx">wg</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -176,10 +163,8 @@ also possible, using functions like
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;ops:&#34;</span><span class="p">,</span> <span class="nx">ops</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;ops:&#34;</span><span class="p">,</span> <span class="nx">ops</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -199,9 +184,8 @@ when running with the <code>-race</code> flag.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run atomic-counters.go
<span class="gp">$</span> go run atomic-counters.go </span></span><span class="line"><span class="cl"><span class="go">ops: 50000</span></span></span></code></pre>
<span class="go">ops: 50000</span></pre>
</td> </td>
</tr> </tr>

57
public/base64-encoding generated
View File

@ -43,8 +43,7 @@ encoding/decoding</a>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/yztzkirFEvv"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/yztzkirFEvv"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -57,12 +56,10 @@ save us some space below.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="kn">import</span> <span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="nx">b64</span> <span class="s">&#34;encoding/base64&#34;</span>
<span class="nx">b64</span> <span class="s">&#34;encoding/base64&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
<span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -72,8 +69,7 @@ save us some space below.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,9 +80,7 @@ save us some space below.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">data</span> <span class="o">:=</span> <span class="s">&#34;abc123!?$*&amp;()&#39;-=@~&#34;</span></span></span></code></pre>
<span class="nx">data</span> <span class="o">:=</span> <span class="s">&#34;abc123!?$*&amp;()&#39;-=@~&#34;</span>
</pre>
</td> </td>
</tr> </tr>
@ -100,10 +94,8 @@ convert our <code>string</code> to that type.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">sEnc</span> <span class="o">:=</span> <span class="nx">b64</span><span class="p">.</span><span class="nx">StdEncoding</span><span class="p">.</span><span class="nf">EncodeToString</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span>
<span class="nx">sEnc</span> <span class="o">:=</span> <span class="nx">b64</span><span class="p">.</span><span class="nx">StdEncoding</span><span class="p">.</span><span class="nf">EncodeToString</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">sEnc</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">sEnc</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -116,11 +108,9 @@ well-formed.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">sDec</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">b64</span><span class="p">.</span><span class="nx">StdEncoding</span><span class="p">.</span><span class="nf">DecodeString</span><span class="p">(</span><span class="nx">sEnc</span><span class="p">)</span>
<span class="nx">sDec</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">b64</span><span class="p">.</span><span class="nx">StdEncoding</span><span class="p">.</span><span class="nf">DecodeString</span><span class="p">(</span><span class="nx">sEnc</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">sDec</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">sDec</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -132,13 +122,11 @@ format.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">uEnc</span> <span class="o">:=</span> <span class="nx">b64</span><span class="p">.</span><span class="nx">URLEncoding</span><span class="p">.</span><span class="nf">EncodeToString</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span>
<span class="nx">uEnc</span> <span class="o">:=</span> <span class="nx">b64</span><span class="p">.</span><span class="nx">URLEncoding</span><span class="p">.</span><span class="nf">EncodeToString</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">uEnc</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">uEnc</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">uDec</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">b64</span><span class="p">.</span><span class="nx">URLEncoding</span><span class="p">.</span><span class="nf">DecodeString</span><span class="p">(</span><span class="nx">uEnc</span><span class="p">)</span>
<span class="nx">uDec</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">b64</span><span class="p">.</span><span class="nx">URLEncoding</span><span class="p">.</span><span class="nf">DecodeString</span><span class="p">(</span><span class="nx">uEnc</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">uDec</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">uDec</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -155,10 +143,9 @@ but they both decode to the original string as desired.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run base64-encoding.go
<span class="gp">$</span> go run base64-encoding.go </span></span><span class="line"><span class="cl"><span class="go">YWJjMTIzIT8kKiYoKSctPUB+
<span class="go">YWJjMTIzIT8kKiYoKSctPUB+ </span></span></span><span class="line"><span class="cl"><span class="go">abc123!?$*&amp;()&#39;-=@~</span></span></span></code></pre>
</span><span class="go">abc123!?$*&amp;()&#39;-=@~</span></pre>
</td> </td>
</tr> </tr>
@ -168,8 +155,8 @@ but they both decode to the original string as desired.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="go">YWJjMTIzIT8kKiYoKSctPUB- <pre class="chroma"><code><span class="line"><span class="cl"><span class="go">YWJjMTIzIT8kKiYoKSctPUB-
</span><span class="go">abc123!?$*&amp;()&#39;-=@~</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">abc123!?$*&amp;()&#39;-=@~</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -47,8 +47,7 @@ those values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/3BRCdRnRszb"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/3BRCdRnRszb"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -58,8 +57,7 @@ those values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,8 +67,7 @@ those values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -82,9 +79,7 @@ those values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">messages</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span></span></span></code></pre>
<span class="nx">messages</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -97,10 +92,8 @@ concurrent receive.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">messages</span> <span class="o">&lt;-</span> <span class="s">&#34;buffered&#34;</span>
<span class="nx">messages</span> <span class="o">&lt;-</span> <span class="s">&#34;buffered&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">messages</span> <span class="o">&lt;-</span> <span class="s">&#34;channel&#34;</span></span></span></code></pre>
<span class="nx">messages</span> <span class="o">&lt;-</span> <span class="s">&#34;channel&#34;</span>
</pre>
</td> </td>
</tr> </tr>
@ -111,11 +104,9 @@ concurrent receive.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="o">&lt;-</span><span class="nx">messages</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="o">&lt;-</span><span class="nx">messages</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="o">&lt;-</span><span class="nx">messages</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="o">&lt;-</span><span class="nx">messages</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -129,9 +120,9 @@ concurrent receive.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run channel-buffering.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run channel-buffering.go
<span class="go">buffered </span></span><span class="line"><span class="cl"><span class="go">buffered
</span><span class="go">channel</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">channel</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -45,8 +45,7 @@ the program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/mjNJDHwUH4R"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/mjNJDHwUH4R"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,8 +55,7 @@ the program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -70,11 +68,9 @@ receive on this channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">ping</span><span class="p">(</span><span class="nx">pings</span> <span class="kd">chan</span><span class="o">&lt;-</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">msg</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">ping</span><span class="p">(</span><span class="nx">pings</span> <span class="kd">chan</span><span class="o">&lt;-</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">msg</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">pings</span> <span class="o">&lt;-</span> <span class="nx">msg</span>
<span class="nx">pings</span> <span class="o">&lt;-</span> <span class="nx">msg</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -86,12 +82,10 @@ receive on this channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">pong</span><span class="p">(</span><span class="nx">pings</span> <span class="o">&lt;-</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">pongs</span> <span class="kd">chan</span><span class="o">&lt;-</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">pong</span><span class="p">(</span><span class="nx">pings</span> <span class="o">&lt;-</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">pongs</span> <span class="kd">chan</span><span class="o">&lt;-</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">msg</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">pings</span>
<span class="nx">msg</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">pings</span> </span></span><span class="line"><span class="cl"> <span class="nx">pongs</span> <span class="o">&lt;-</span> <span class="nx">msg</span>
<span class="nx">pongs</span> <span class="o">&lt;-</span> <span class="nx">msg</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -101,14 +95,13 @@ receive on this channel.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">pings</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">pings</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="nx">pongs</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">pongs</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="nf">ping</span><span class="p">(</span><span class="nx">pings</span><span class="p">,</span> <span class="s">&#34;passed message&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">ping</span><span class="p">(</span><span class="nx">pings</span><span class="p">,</span> <span class="s">&#34;passed message&#34;</span><span class="p">)</span>
<span class="nf">pong</span><span class="p">(</span><span class="nx">pings</span><span class="p">,</span> <span class="nx">pongs</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">pong</span><span class="p">(</span><span class="nx">pings</span><span class="p">,</span> <span class="nx">pongs</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="o">&lt;-</span><span class="nx">pongs</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="o">&lt;-</span><span class="nx">pongs</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -122,8 +115,8 @@ receive on this channel.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run channel-directions.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run channel-directions.go
<span class="go">passed message</span></pre> </span></span><span class="line"><span class="cl"><span class="go">passed message</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -46,8 +46,7 @@ you may prefer to use a <a href="waitgroups">WaitGroup</a>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/Nw-1DzIGk5f"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/Nw-1DzIGk5f"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -57,11 +56,10 @@ you may prefer to use a <a href="waitgroups">WaitGroup</a>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -74,12 +72,10 @@ goroutine that this function&rsquo;s work is done.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">done</span> <span class="kd">chan</span> <span class="kt">bool</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">done</span> <span class="kd">chan</span> <span class="kt">bool</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="s">&#34;working...&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="s">&#34;working...&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;done&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;done&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -90,10 +86,8 @@ goroutine that this function&rsquo;s work is done.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o">&lt;-</span> <span class="kc">true</span>
<span class="nx">done</span> <span class="o">&lt;-</span> <span class="kc">true</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -103,8 +97,7 @@ goroutine that this function&rsquo;s work is done.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -116,10 +109,8 @@ notify on.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="nx">done</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">done</span><span class="p">)</span></span></span></code></pre>
<span class="k">go</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">done</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -131,10 +122,8 @@ worker on the channel.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">done</span>
<span class="o">&lt;-</span><span class="nx">done</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -148,8 +137,8 @@ worker on the channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run channel-synchronization.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run channel-synchronization.go
<span class="go">working...done </span></pre> </span></span><span class="line"><span class="cl"><span class="go">working...done </span></span></span></code></pre>
</td> </td>
</tr> </tr>

30
public/channels generated
View File

@ -45,8 +45,7 @@ goroutine.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/MaLY7AiAkHM"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/MaLY7AiAkHM"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,8 +55,7 @@ goroutine.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -67,8 +65,7 @@ goroutine.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -80,9 +77,7 @@ Channels are typed by the values they convey.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">messages</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">)</span></span></span></code></pre>
<span class="nx">messages</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -95,9 +90,7 @@ channel we made above, from a new goroutine.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> <span class="nx">messages</span> <span class="o">&lt;-</span> <span class="s">&#34;ping&#34;</span> <span class="p">}()</span></span></span></code></pre>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> <span class="nx">messages</span> <span class="o">&lt;-</span> <span class="s">&#34;ping&#34;</span> <span class="p">}()</span>
</pre>
</td> </td>
</tr> </tr>
@ -110,11 +103,9 @@ we sent above and print it out.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">msg</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">messages</span>
<span class="nx">msg</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">messages</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">msg</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">msg</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -131,9 +122,8 @@ our channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run channels.go
<span class="gp">$</span> go run channels.go </span></span><span class="line"><span class="cl"><span class="go">ping</span></span></span></code></pre>
<span class="go">ping</span></pre>
</td> </td>
</tr> </tr>

View File

@ -44,8 +44,7 @@ completion to the channel&rsquo;s receivers.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/vCvRjcMq7p3"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/vCvRjcMq7p3"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,8 +54,7 @@ completion to the channel&rsquo;s receivers.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -70,11 +68,9 @@ the worker we&rsquo;ll <code>close</code> the <code>jobs</code> channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">jobs</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="nx">jobs</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">)</span></span></span></code></pre>
<span class="nx">done</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -91,20 +87,18 @@ all our jobs.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">j</span><span class="p">,</span> <span class="nx">more</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">jobs</span>
<span class="nx">j</span><span class="p">,</span> <span class="nx">more</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">jobs</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">more</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">more</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received job&#34;</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received job&#34;</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received all jobs&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received all jobs&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o">&lt;-</span> <span class="kc">true</span>
<span class="nx">done</span> <span class="o">&lt;-</span> <span class="kc">true</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span>
<span class="k">return</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
<span class="p">}()</span>
</pre>
</td> </td>
</tr> </tr>
@ -116,14 +110,12 @@ channel, then closes it.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;=</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;=</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">jobs</span> <span class="o">&lt;-</span> <span class="nx">j</span>
<span class="nx">jobs</span> <span class="o">&lt;-</span> <span class="nx">j</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sent job&#34;</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sent job&#34;</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nb">close</span><span class="p">(</span><span class="nx">jobs</span><span class="p">)</span>
<span class="nb">close</span><span class="p">(</span><span class="nx">jobs</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sent all jobs&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sent all jobs&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -136,10 +128,8 @@ we saw earlier.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">done</span>
<span class="o">&lt;-</span><span class="nx">done</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -153,15 +143,15 @@ we saw earlier.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run closing-channels.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run closing-channels.go
<span class="go">sent job 1 </span></span><span class="line"><span class="cl"><span class="go">sent job 1
</span><span class="go">received job 1 </span></span></span><span class="line"><span class="cl"><span class="go">received job 1
</span><span class="go">sent job 2 </span></span></span><span class="line"><span class="cl"><span class="go">sent job 2
</span><span class="go">received job 2 </span></span></span><span class="line"><span class="cl"><span class="go">received job 2
</span><span class="go">sent job 3 </span></span></span><span class="line"><span class="cl"><span class="go">sent job 3
</span><span class="go">received job 3 </span></span></span><span class="line"><span class="cl"><span class="go">received job 3
</span><span class="go">sent all jobs </span></span></span><span class="line"><span class="cl"><span class="go">sent all jobs
</span><span class="go">received all jobs</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">received all jobs</span></span></span></code></pre>
</td> </td>
</tr> </tr>

55
public/closures generated
View File

@ -45,8 +45,7 @@ a function inline without having to name it.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/NpgpzS8ZG8y"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/NpgpzS8ZG8y"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,8 +55,7 @@ a function inline without having to name it.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -71,15 +69,13 @@ form a closure.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">intSeq</span><span class="p">()</span> <span class="kd">func</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">intSeq</span><span class="p">()</span> <span class="kd">func</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span>
<span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="kd">func</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span>
<span class="k">return</span> <span class="kd">func</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">i</span><span class="o">++</span>
<span class="nx">i</span><span class="o">++</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">i</span>
<span class="k">return</span> <span class="nx">i</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -89,8 +85,7 @@ form a closure.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -104,9 +99,7 @@ we call <code>nextInt</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">nextInt</span> <span class="o">:=</span> <span class="nf">intSeq</span><span class="p">()</span></span></span></code></pre>
<span class="nx">nextInt</span> <span class="o">:=</span> <span class="nf">intSeq</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -118,11 +111,9 @@ a few times.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">nextInt</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">nextInt</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">nextInt</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">nextInt</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">nextInt</span><span class="p">())</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">nextInt</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -134,11 +125,9 @@ particular function, create and test a new one.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">newInts</span> <span class="o">:=</span> <span class="nf">intSeq</span><span class="p">()</span>
<span class="nx">newInts</span> <span class="o">:=</span> <span class="nf">intSeq</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">newInts</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">newInts</span><span class="p">())</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -152,11 +141,11 @@ particular function, create and test a new one.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run closures.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run closures.go
<span class="go">1 </span></span><span class="line"><span class="cl"><span class="go">1
</span><span class="go">2 </span></span></span><span class="line"><span class="cl"><span class="go">2
</span><span class="go">3 </span></span></span><span class="line"><span class="cl"><span class="go">3
</span><span class="go">1</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">1</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -45,8 +45,7 @@ For example, <code>go run hello.go</code> uses <code>run</code> and
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/UYCEvh9d2Zb"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/UYCEvh9d2Zb"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,11 +55,10 @@ For example, <code>go run hello.go</code> uses <code>run</code> and
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -70,8 +68,7 @@ For example, <code>go run hello.go</code> uses <code>run</code> and
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -85,10 +82,8 @@ holds the arguments to the program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">argsWithProg</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Args</span>
<span class="nx">argsWithProg</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Args</span> </span></span><span class="line"><span class="cl"> <span class="nx">argsWithoutProg</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span></span></span></code></pre>
<span class="nx">argsWithoutProg</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
</pre>
</td> </td>
</tr> </tr>
@ -99,9 +94,7 @@ holds the arguments to the program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">arg</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span></span></span></code></pre>
<span class="nx">arg</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
</pre>
</td> </td>
</tr> </tr>
@ -111,11 +104,10 @@ holds the arguments to the program.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">argsWithProg</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">argsWithProg</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">argsWithoutProg</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">argsWithoutProg</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">arg</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">arg</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -131,12 +123,11 @@ build a binary with <code>go build</code> first.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go build command-line-arguments.go
<span class="gp">$</span> go build command-line-arguments.go </span></span><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-arguments a b c d
<span class="gp">$</span> ./command-line-arguments a b c d </span></span><span class="line"><span class="cl"><span class="go">[./command-line-arguments a b c d]
<span class="go">[./command-line-arguments a b c d] </span></span></span><span class="line"><span class="cl"><span class="go">[a b c d]
</span><span class="go">[a b c d] </span></span></span><span class="line"><span class="cl"><span class="go">c</span></span></span></code></pre>
</span><span class="go">c</span></pre>
</td> </td>
</tr> </tr>

View File

@ -45,8 +45,7 @@ command-line flag.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/IUPZlYSigc3"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/IUPZlYSigc3"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -59,12 +58,10 @@ implement our example command-line program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="kn">import</span> <span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;flag&#34;</span>
<span class="s">&#34;flag&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
<span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -74,8 +71,7 @@ implement our example command-line program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -91,9 +87,7 @@ we&rsquo;ll see how to use this pointer below.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">wordPtr</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">String</span><span class="p">(</span><span class="s">&#34;word&#34;</span><span class="p">,</span> <span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;a string&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">wordPtr</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">String</span><span class="p">(</span><span class="s">&#34;word&#34;</span><span class="p">,</span> <span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;a string&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -105,10 +99,8 @@ similar approach to the <code>word</code> flag.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">numbPtr</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">Int</span><span class="p">(</span><span class="s">&#34;numb&#34;</span><span class="p">,</span> <span class="mi">42</span><span class="p">,</span> <span class="s">&#34;an int&#34;</span><span class="p">)</span>
<span class="nx">numbPtr</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">Int</span><span class="p">(</span><span class="s">&#34;numb&#34;</span><span class="p">,</span> <span class="mi">42</span><span class="p">,</span> <span class="s">&#34;an int&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">forkPtr</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">Bool</span><span class="p">(</span><span class="s">&#34;fork&#34;</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">&#34;a bool&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">forkPtr</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">Bool</span><span class="p">(</span><span class="s">&#34;fork&#34;</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">&#34;a bool&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -122,10 +114,8 @@ declaration function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">svar</span> <span class="kt">string</span>
<span class="kd">var</span> <span class="nx">svar</span> <span class="kt">string</span> </span></span><span class="line"><span class="cl"> <span class="nx">flag</span><span class="p">.</span><span class="nf">StringVar</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">svar</span><span class="p">,</span> <span class="s">&#34;svar&#34;</span><span class="p">,</span> <span class="s">&#34;bar&#34;</span><span class="p">,</span> <span class="s">&#34;a string var&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">flag</span><span class="p">.</span><span class="nf">StringVar</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">svar</span><span class="p">,</span> <span class="s">&#34;svar&#34;</span><span class="p">,</span> <span class="s">&#34;bar&#34;</span><span class="p">,</span> <span class="s">&#34;a string var&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -137,9 +127,7 @@ to execute the command-line parsing.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">flag</span><span class="p">.</span><span class="nf">Parse</span><span class="p">()</span></span></span></code></pre>
<span class="nx">flag</span><span class="p">.</span><span class="nf">Parse</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -153,14 +141,12 @@ to get the actual option values.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;word:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">wordPtr</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;word:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">wordPtr</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;numb:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">numbPtr</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;numb:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">numbPtr</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;fork:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">forkPtr</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;fork:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">forkPtr</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;svar:&#34;</span><span class="p">,</span> <span class="nx">svar</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;svar:&#34;</span><span class="p">,</span> <span class="nx">svar</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;tail:&#34;</span><span class="p">,</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">Args</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;tail:&#34;</span><span class="p">,</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">Args</span><span class="p">())</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -177,8 +163,7 @@ binary directly.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go build command-line-flags.go</span></span></code></pre>
<span class="gp">$</span> go build command-line-flags.go</pre>
</td> </td>
</tr> </tr>
@ -190,13 +175,12 @@ all flags.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-flags -word=opt -numb=7 -fork -svar=flag
<span class="gp">$</span> ./command-line-flags -word=opt -numb=7 -fork -svar=flag </span></span><span class="line"><span class="cl"><span class="go">word: opt
<span class="go">word: opt </span></span></span><span class="line"><span class="cl"><span class="go">numb: 7
</span><span class="go">numb: 7 </span></span></span><span class="line"><span class="cl"><span class="go">fork: true
</span><span class="go">fork: true </span></span></span><span class="line"><span class="cl"><span class="go">svar: flag
</span><span class="go">svar: flag </span></span></span><span class="line"><span class="cl"><span class="go">tail: []</span></span></span></code></pre>
</span><span class="go">tail: []</span></pre>
</td> </td>
</tr> </tr>
@ -208,13 +192,12 @@ their default values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-flags -word=opt
<span class="gp">$</span> ./command-line-flags -word=opt </span></span><span class="line"><span class="cl"><span class="go">word: opt
<span class="go">word: opt </span></span></span><span class="line"><span class="cl"><span class="go">numb: 42
</span><span class="go">numb: 42 </span></span></span><span class="line"><span class="cl"><span class="go">fork: false
</span><span class="go">fork: false </span></span></span><span class="line"><span class="cl"><span class="go">svar: bar
</span><span class="go">svar: bar </span></span></span><span class="line"><span class="cl"><span class="go">tail: []</span></span></span></code></pre>
</span><span class="go">tail: []</span></pre>
</td> </td>
</tr> </tr>
@ -226,11 +209,10 @@ any flags.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-flags -word=opt a1 a2 a3
<span class="gp">$</span> ./command-line-flags -word=opt a1 a2 a3 </span></span><span class="line"><span class="cl"><span class="go">word: opt
<span class="go">word: opt </span></span></span><span class="line"><span class="cl"><span class="go">...
</span><span class="go">... </span></span></span><span class="line"><span class="cl"><span class="go">tail: [a1 a2 a3]</span></span></span></code></pre>
</span><span class="go">tail: [a1 a2 a3]</span></pre>
</td> </td>
</tr> </tr>
@ -243,13 +225,12 @@ will be interpreted as positional arguments).</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-flags -word=opt a1 a2 a3 -numb=7
<span class="gp">$</span> ./command-line-flags -word=opt a1 a2 a3 -numb=7 </span></span><span class="line"><span class="cl"><span class="go">word: opt
<span class="go">word: opt </span></span></span><span class="line"><span class="cl"><span class="go">numb: 42
</span><span class="go">numb: 42 </span></span></span><span class="line"><span class="cl"><span class="go">fork: false
</span><span class="go">fork: false </span></span></span><span class="line"><span class="cl"><span class="go">svar: bar
</span><span class="go">svar: bar </span></span></span><span class="line"><span class="cl"><span class="go">tail: [a1 a2 a3 -numb=7]</span></span></span></code></pre>
</span><span class="go">tail: [a1 a2 a3 -numb=7]</span></pre>
</td> </td>
</tr> </tr>
@ -261,13 +242,12 @@ generated help text for the command-line program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-flags -h
<span class="gp">$</span> ./command-line-flags -h </span></span><span class="line"><span class="cl"><span class="go">Usage of ./command-line-flags:
<span class="go">Usage of ./command-line-flags: </span></span></span><span class="line"><span class="cl"><span class="go"> -fork=false: a bool
</span><span class="go"> -fork=false: a bool </span></span></span><span class="line"><span class="cl"><span class="go"> -numb=42: an int
</span><span class="go"> -numb=42: an int </span></span></span><span class="line"><span class="cl"><span class="go"> -svar=&#34;bar&#34;: a string var
</span><span class="go"> -svar=&#34;bar&#34;: a string var </span></span></span><span class="line"><span class="cl"><span class="go"> -word=&#34;foo&#34;: a string</span></span></span></code></pre>
</span><span class="go"> -word=&#34;foo&#34;: a string</span></pre>
</td> </td>
</tr> </tr>
@ -280,11 +260,10 @@ and show the help text again.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-flags -wat
<span class="gp">$</span> ./command-line-flags -wat </span></span><span class="line"><span class="cl"><span class="go">flag provided but not defined: -wat
<span class="go">flag provided but not defined: -wat </span></span></span><span class="line"><span class="cl"><span class="go">Usage of ./command-line-flags:
</span><span class="go">Usage of ./command-line-flags: </span></span></span><span class="line"><span class="cl"><span class="go">...</span></span></span></code></pre>
</span><span class="go">...</span></pre>
</td> </td>
</tr> </tr>

View File

@ -47,8 +47,7 @@ subcommands that have their own flags.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/DkvdHKK-XCv"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/DkvdHKK-XCv"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -58,12 +57,11 @@ subcommands that have their own flags.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;flag&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;flag&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -73,8 +71,7 @@ subcommands that have their own flags.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -87,11 +84,9 @@ for this subcommand.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fooCmd</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">NewFlagSet</span><span class="p">(</span><span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="nx">flag</span><span class="p">.</span><span class="nx">ExitOnError</span><span class="p">)</span>
<span class="nx">fooCmd</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">NewFlagSet</span><span class="p">(</span><span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="nx">flag</span><span class="p">.</span><span class="nx">ExitOnError</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fooEnable</span> <span class="o">:=</span> <span class="nx">fooCmd</span><span class="p">.</span><span class="nf">Bool</span><span class="p">(</span><span class="s">&#34;enable&#34;</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">&#34;enable&#34;</span><span class="p">)</span>
<span class="nx">fooEnable</span> <span class="o">:=</span> <span class="nx">fooCmd</span><span class="p">.</span><span class="nf">Bool</span><span class="p">(</span><span class="s">&#34;enable&#34;</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">&#34;enable&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fooName</span> <span class="o">:=</span> <span class="nx">fooCmd</span><span class="p">.</span><span class="nf">String</span><span class="p">(</span><span class="s">&#34;name&#34;</span><span class="p">,</span> <span class="s">&#34;&#34;</span><span class="p">,</span> <span class="s">&#34;name&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fooName</span> <span class="o">:=</span> <span class="nx">fooCmd</span><span class="p">.</span><span class="nf">String</span><span class="p">(</span><span class="s">&#34;name&#34;</span><span class="p">,</span> <span class="s">&#34;&#34;</span><span class="p">,</span> <span class="s">&#34;name&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -103,10 +98,8 @@ supported flags.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">barCmd</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">NewFlagSet</span><span class="p">(</span><span class="s">&#34;bar&#34;</span><span class="p">,</span> <span class="nx">flag</span><span class="p">.</span><span class="nx">ExitOnError</span><span class="p">)</span>
<span class="nx">barCmd</span> <span class="o">:=</span> <span class="nx">flag</span><span class="p">.</span><span class="nf">NewFlagSet</span><span class="p">(</span><span class="s">&#34;bar&#34;</span><span class="p">,</span> <span class="nx">flag</span><span class="p">.</span><span class="nx">ExitOnError</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">barLevel</span> <span class="o">:=</span> <span class="nx">barCmd</span><span class="p">.</span><span class="nf">Int</span><span class="p">(</span><span class="s">&#34;level&#34;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&#34;level&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">barLevel</span> <span class="o">:=</span> <span class="nx">barCmd</span><span class="p">.</span><span class="nf">Int</span><span class="p">(</span><span class="s">&#34;level&#34;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&#34;level&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -118,12 +111,10 @@ to the program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">)</span> <span class="p">&lt;</span> <span class="mi">2</span> <span class="p">{</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">)</span> <span class="p">&lt;</span> <span class="mi">2</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;expected &#39;foo&#39; or &#39;bar&#39; subcommands&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;expected &#39;foo&#39; or &#39;bar&#39; subcommands&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -134,9 +125,7 @@ to the program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">switch</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="p">{</span></span></span></code></pre>
<span class="k">switch</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="p">{</span>
</pre>
</td> </td>
</tr> </tr>
@ -148,24 +137,22 @@ have access to trailing positional arguments.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">case</span> <span class="s">&#34;foo&#34;</span><span class="p">:</span>
<span class="k">case</span> <span class="s">&#34;foo&#34;</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fooCmd</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span>
<span class="nx">fooCmd</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;subcommand &#39;foo&#39;&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;subcommand &#39;foo&#39;&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; enable:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">fooEnable</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; enable:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">fooEnable</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; name:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">fooName</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; name:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">fooName</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; tail:&#34;</span><span class="p">,</span> <span class="nx">fooCmd</span><span class="p">.</span><span class="nf">Args</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; tail:&#34;</span><span class="p">,</span> <span class="nx">fooCmd</span><span class="p">.</span><span class="nf">Args</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="s">&#34;bar&#34;</span><span class="p">:</span>
<span class="k">case</span> <span class="s">&#34;bar&#34;</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">barCmd</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span>
<span class="nx">barCmd</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Args</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;subcommand &#39;bar&#39;&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;subcommand &#39;bar&#39;&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; level:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">barLevel</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; level:&#34;</span><span class="p">,</span> <span class="o">*</span><span class="nx">barLevel</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; tail:&#34;</span><span class="p">,</span> <span class="nx">barCmd</span><span class="p">.</span><span class="nf">Args</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; tail:&#34;</span><span class="p">,</span> <span class="nx">barCmd</span><span class="p">.</span><span class="nf">Args</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="k">default</span><span class="p">:</span>
<span class="k">default</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;expected &#39;foo&#39; or &#39;bar&#39; subcommands&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;expected &#39;foo&#39; or &#39;bar&#39; subcommands&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -179,7 +166,7 @@ have access to trailing positional arguments.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go build command-line-subcommands.go </pre> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go build command-line-subcommands.go </span></span></code></pre>
</td> </td>
</tr> </tr>
@ -190,12 +177,11 @@ have access to trailing positional arguments.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-subcommands foo -enable -name=joe a1 a2
<span class="gp">$</span> ./command-line-subcommands foo -enable -name=joe a1 a2 </span></span><span class="line"><span class="cl"><span class="go">subcommand &#39;foo&#39;
<span class="go">subcommand &#39;foo&#39; </span></span></span><span class="line"><span class="cl"><span class="go"> enable: true
</span><span class="go"> enable: true </span></span></span><span class="line"><span class="cl"><span class="go"> name: joe
</span><span class="go"> name: joe </span></span></span><span class="line"><span class="cl"><span class="go"> tail: [a1 a2]</span></span></span></code></pre>
</span><span class="go"> tail: [a1 a2]</span></pre>
</td> </td>
</tr> </tr>
@ -206,11 +192,10 @@ have access to trailing positional arguments.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-subcommands bar -level 8 a1
<span class="gp">$</span> ./command-line-subcommands bar -level 8 a1 </span></span><span class="line"><span class="cl"><span class="go">subcommand &#39;bar&#39;
<span class="go">subcommand &#39;bar&#39; </span></span></span><span class="line"><span class="cl"><span class="go"> level: 8
</span><span class="go"> level: 8 </span></span></span><span class="line"><span class="cl"><span class="go"> tail: [a1]</span></span></span></code></pre>
</span><span class="go"> tail: [a1]</span></pre>
</td> </td>
</tr> </tr>
@ -221,12 +206,11 @@ have access to trailing positional arguments.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-subcommands bar -enable a1
<span class="gp">$</span> ./command-line-subcommands bar -enable a1 </span></span><span class="line"><span class="cl"><span class="go">flag provided but not defined: -enable
<span class="go">flag provided but not defined: -enable </span></span></span><span class="line"><span class="cl"><span class="go">Usage of bar:
</span><span class="go">Usage of bar: </span></span></span><span class="line"><span class="cl"><span class="go"> -level int
</span><span class="go"> -level int </span></span></span><span class="line"><span class="cl"><span class="go"> level</span></span></span></code></pre>
</span><span class="go"> level</span></pre>
</td> </td>
</tr> </tr>

51
public/constants generated
View File

@ -43,8 +43,7 @@ and numeric values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/Vw-pXSfo9_b"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/Vw-pXSfo9_b"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,11 +53,10 @@ and numeric values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;math&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;math&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,9 +67,7 @@ and numeric values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">const</span> <span class="nx">s</span> <span class="kt">string</span> <span class="p">=</span> <span class="s">&#34;constant&#34;</span></span></span></code></pre>
<span class="kd">const</span> <span class="nx">s</span> <span class="kt">string</span> <span class="p">=</span> <span class="s">&#34;constant&#34;</span>
</pre>
</td> </td>
</tr> </tr>
@ -81,9 +77,8 @@ and numeric values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -95,9 +90,7 @@ statement can.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">const</span> <span class="nx">n</span> <span class="p">=</span> <span class="mi">500000000</span></span></span></code></pre>
<span class="kd">const</span> <span class="nx">n</span> <span class="p">=</span> <span class="mi">500000000</span>
</pre>
</td> </td>
</tr> </tr>
@ -109,10 +102,8 @@ arbitrary precision.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">const</span> <span class="nx">d</span> <span class="p">=</span> <span class="mf">3e20</span> <span class="o">/</span> <span class="nx">n</span>
<span class="kd">const</span> <span class="nx">d</span> <span class="p">=</span> <span class="mf">3e20</span> <span class="o">/</span> <span class="nx">n</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -124,9 +115,7 @@ one, such as by an explicit conversion.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">int64</span><span class="p">(</span><span class="nx">d</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">int64</span><span class="p">(</span><span class="nx">d</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -140,10 +129,8 @@ assignment or function call. For example, here
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nf">Sin</span><span class="p">(</span><span class="nx">n</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nf">Sin</span><span class="p">(</span><span class="nx">n</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -157,11 +144,11 @@ assignment or function call. For example, here
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run constant.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run constant.go
<span class="go">constant </span></span><span class="line"><span class="cl"><span class="go">constant
</span><span class="go">6e+11 </span></span></span><span class="line"><span class="cl"><span class="go">6e+11
</span><span class="go">600000000000 </span></span></span><span class="line"><span class="cl"><span class="go">600000000000
</span><span class="go">-0.28470407323754404</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">-0.28470407323754404</span></span></span></code></pre>
</td> </td>
</tr> </tr>

75
public/context generated
View File

@ -37,9 +37,7 @@ across API boundaries and goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/0_bu1o8rIBO"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/0_bu1o8rIBO"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
<span class="kn">package</span> <span class="nx">main</span>
</pre>
</td> </td>
</tr> </tr>
@ -49,12 +47,11 @@ across API boundaries and goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;net/http&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;net/http&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -64,8 +61,7 @@ across API boundaries and goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">hello</span><span class="p">(</span><span class="nx">w</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">hello</span><span class="p">(</span><span class="nx">w</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -78,11 +74,9 @@ the <code>Context()</code> method.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">ctx</span> <span class="o">:=</span> <span class="nx">req</span><span class="p">.</span><span class="nf">Context</span><span class="p">()</span>
<span class="nx">ctx</span> <span class="o">:=</span> <span class="nx">req</span><span class="p">.</span><span class="nf">Context</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;server: hello handler started&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;server: hello handler started&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;server: hello handler ended&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="k">defer</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;server: hello handler ended&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -97,12 +91,10 @@ the work and return as soon as possible.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
<span class="k">select</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o">&lt;-</span><span class="nx">time</span><span class="p">.</span><span class="nf">After</span><span class="p">(</span><span class="mi">10</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">):</span>
<span class="k">case</span> <span class="o">&lt;-</span><span class="nx">time</span><span class="p">.</span><span class="nf">After</span><span class="p">(</span><span class="mi">10</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="s">&#34;hello\n&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="s">&#34;hello\n&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o">&lt;-</span><span class="nx">ctx</span><span class="p">.</span><span class="nf">Done</span><span class="p">():</span></span></span></code></pre>
<span class="k">case</span> <span class="o">&lt;-</span><span class="nx">ctx</span><span class="p">.</span><span class="nf">Done</span><span class="p">():</span>
</pre>
</td> </td>
</tr> </tr>
@ -115,14 +107,12 @@ closed.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">ctx</span><span class="p">.</span><span class="nf">Err</span><span class="p">()</span>
<span class="nx">err</span> <span class="o">:=</span> <span class="nx">ctx</span><span class="p">.</span><span class="nf">Err</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;server:&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;server:&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">internalError</span> <span class="o">:=</span> <span class="nx">http</span><span class="p">.</span><span class="nx">StatusInternalServerError</span>
<span class="nx">internalError</span> <span class="o">:=</span> <span class="nx">http</span><span class="p">.</span><span class="nx">StatusInternalServerError</span> </span></span><span class="line"><span class="cl"> <span class="nx">http</span><span class="p">.</span><span class="nf">Error</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="nx">err</span><span class="p">.</span><span class="nf">Error</span><span class="p">(),</span> <span class="nx">internalError</span><span class="p">)</span>
<span class="nx">http</span><span class="p">.</span><span class="nf">Error</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="nx">err</span><span class="p">.</span><span class="nf">Error</span><span class="p">(),</span> <span class="nx">internalError</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -132,8 +122,7 @@ closed.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -145,11 +134,9 @@ route, and start serving.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">http</span><span class="p">.</span><span class="nf">HandleFunc</span><span class="p">(</span><span class="s">&#34;/hello&#34;</span><span class="p">,</span> <span class="nx">hello</span><span class="p">)</span>
<span class="nx">http</span><span class="p">.</span><span class="nf">HandleFunc</span><span class="p">(</span><span class="s">&#34;/hello&#34;</span><span class="p">,</span> <span class="nx">hello</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">http</span><span class="p">.</span><span class="nf">ListenAndServe</span><span class="p">(</span><span class="s">&#34;:8090&#34;</span><span class="p">,</span> <span class="kc">nil</span><span class="p">)</span>
<span class="nx">http</span><span class="p">.</span><span class="nf">ListenAndServe</span><span class="p">(</span><span class="s">&#34;:8090&#34;</span><span class="p">,</span> <span class="kc">nil</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -164,8 +151,7 @@ route, and start serving.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run context-in-http-servers.go &amp;</span></span></code></pre>
<span class="gp">$</span> go run context-in-http-servers.go &amp;</pre>
</td> </td>
</tr> </tr>
@ -178,12 +164,11 @@ cancellation.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> curl localhost:8090/hello
<span class="gp">$</span> curl localhost:8090/hello </span></span><span class="line"><span class="cl"><span class="go">server: hello handler started
<span class="go">server: hello handler started </span></span></span><span class="line"><span class="cl"><span class="go">^C
</span><span class="go">^C </span></span></span><span class="line"><span class="cl"><span class="go">server: context canceled
</span><span class="go">server: context canceled </span></span></span><span class="line"><span class="cl"><span class="go">server: hello handler ended</span></span></span></code></pre>
</span><span class="go">server: hello handler ended</span></pre>
</td> </td>
</tr> </tr>

80
public/defer generated
View File

@ -45,8 +45,7 @@ purposes of cleanup. <code>defer</code> is often used where e.g.
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/5SDVfc_jxbg"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/5SDVfc_jxbg"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,11 +55,10 @@ purposes of cleanup. <code>defer</code> is often used where e.g.
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -73,9 +71,7 @@ do that with <code>defer</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
<span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
</pre>
</td> </td>
</tr> </tr>
@ -90,12 +86,10 @@ of the enclosing function (<code>main</code>), after
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">f</span> <span class="o">:=</span> <span class="nf">createFile</span><span class="p">(</span><span class="s">&#34;/tmp/defer.txt&#34;</span><span class="p">)</span>
<span class="nx">f</span> <span class="o">:=</span> <span class="nf">createFile</span><span class="p">(</span><span class="s">&#34;/tmp/defer.txt&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nf">closeFile</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span>
<span class="k">defer</span> <span class="nf">closeFile</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">writeFile</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span>
<span class="nf">writeFile</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -105,15 +99,14 @@ of the enclosing function (<code>main</code>), after
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">createFile</span><span class="p">(</span><span class="nx">p</span> <span class="kt">string</span><span class="p">)</span> <span class="o">*</span><span class="nx">os</span><span class="p">.</span><span class="nx">File</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">createFile</span><span class="p">(</span><span class="nx">p</span> <span class="kt">string</span><span class="p">)</span> <span class="o">*</span><span class="nx">os</span><span class="p">.</span><span class="nx">File</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;creating&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;creating&#34;</span><span class="p">)</span>
<span class="nx">f</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Create</span><span class="p">(</span><span class="nx">p</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">f</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Create</span><span class="p">(</span><span class="nx">p</span><span class="p">)</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="k">return</span> <span class="nx">f</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">f</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -123,10 +116,9 @@ of the enclosing function (<code>main</code>), after
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">writeFile</span><span class="p">(</span><span class="nx">f</span> <span class="o">*</span><span class="nx">os</span><span class="p">.</span><span class="nx">File</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">writeFile</span><span class="p">(</span><span class="nx">f</span> <span class="o">*</span><span class="nx">os</span><span class="p">.</span><span class="nx">File</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;writing&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;writing&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintln</span><span class="p">(</span><span class="nx">f</span><span class="p">,</span> <span class="s">&#34;data&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintln</span><span class="p">(</span><span class="nx">f</span><span class="p">,</span> <span class="s">&#34;data&#34;</span><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -136,8 +128,7 @@ of the enclosing function (<code>main</code>), after
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="p">}</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -149,10 +140,9 @@ file, even in a deferred function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">closeFile</span><span class="p">(</span><span class="nx">f</span> <span class="o">*</span><span class="nx">os</span><span class="p">.</span><span class="nx">File</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">closeFile</span><span class="p">(</span><span class="nx">f</span> <span class="o">*</span><span class="nx">os</span><span class="p">.</span><span class="nx">File</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;closing&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;closing&#34;</span><span class="p">)</span>
<span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -162,12 +152,11 @@ file, even in a deferred function.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stderr</span><span class="p">,</span> <span class="s">&#34;error: %v\n&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stderr</span><span class="p">,</span> <span class="s">&#34;error: %v\n&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span>
<span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -183,11 +172,10 @@ after being written.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run defer.go
<span class="gp">$</span> go run defer.go </span></span><span class="line"><span class="cl"><span class="go">creating
<span class="go">creating </span></span></span><span class="line"><span class="cl"><span class="go">writing
</span><span class="go">writing </span></span></span><span class="line"><span class="cl"><span class="go">closing</span></span></span></code></pre>
</span><span class="go">closing</span></pre>
</td> </td>
</tr> </tr>

160
public/directories generated
View File

@ -43,8 +43,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/cICbVSX51zI"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/cICbVSX51zI"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,12 +53,11 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="s">&#34;path/filepath&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;path/filepath&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,12 +67,11 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">check</span><span class="p">(</span><span class="nx">e</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">check</span><span class="p">(</span><span class="nx">e</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,8 +81,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -97,10 +93,8 @@ directory.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Mkdir</span><span class="p">(</span><span class="s">&#34;subdir&#34;</span><span class="p">,</span> <span class="mo">0755</span><span class="p">)</span>
<span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Mkdir</span><span class="p">(</span><span class="s">&#34;subdir&#34;</span><span class="p">,</span> <span class="mo">0755</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -114,9 +108,7 @@ will delete a whole directory tree (similarly to
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nx">os</span><span class="p">.</span><span class="nf">RemoveAll</span><span class="p">(</span><span class="s">&#34;subdir&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="k">defer</span> <span class="nx">os</span><span class="p">.</span><span class="nf">RemoveAll</span><span class="p">(</span><span class="s">&#34;subdir&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -127,12 +119,10 @@ will delete a whole directory tree (similarly to
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">createEmptyFile</span> <span class="o">:=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">name</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">createEmptyFile</span> <span class="o">:=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">name</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">d</span> <span class="o">:=</span> <span class="p">[]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;&#34;</span><span class="p">)</span>
<span class="nx">d</span> <span class="o">:=</span> <span class="p">[]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nf">WriteFile</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">d</span><span class="p">,</span> <span class="mo">0644</span><span class="p">))</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nf">WriteFile</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">d</span><span class="p">,</span> <span class="mo">0644</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -142,8 +132,7 @@ will delete a whole directory tree (similarly to
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">&#34;subdir/file1&#34;</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">&#34;subdir/file1&#34;</span><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -156,10 +145,8 @@ command-line <code>mkdir -p</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">MkdirAll</span><span class="p">(</span><span class="s">&#34;subdir/parent/child&#34;</span><span class="p">,</span> <span class="mo">0755</span><span class="p">)</span>
<span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">MkdirAll</span><span class="p">(</span><span class="s">&#34;subdir/parent/child&#34;</span><span class="p">,</span> <span class="mo">0755</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -169,10 +156,9 @@ command-line <code>mkdir -p</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">&#34;subdir/parent/file2&#34;</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">&#34;subdir/parent/file2&#34;</span><span class="p">)</span>
<span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">&#34;subdir/parent/file3&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">&#34;subdir/parent/file3&#34;</span><span class="p">)</span>
<span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">&#34;subdir/parent/child/file4&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">&#34;subdir/parent/child/file4&#34;</span><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -184,10 +170,8 @@ slice of <code>os.DirEntry</code> objects.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">c</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">ReadDir</span><span class="p">(</span><span class="s">&#34;subdir/parent&#34;</span><span class="p">)</span>
<span class="nx">c</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">ReadDir</span><span class="p">(</span><span class="s">&#34;subdir/parent&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -197,11 +181,10 @@ slice of <code>os.DirEntry</code> objects.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Listing subdir/parent&#34;</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Listing subdir/parent&#34;</span><span class="p">)</span>
<span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">entry</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">c</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">entry</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">c</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; &#34;</span><span class="p">,</span> <span class="nx">entry</span><span class="p">.</span><span class="nf">Name</span><span class="p">(),</span> <span class="nx">entry</span><span class="p">.</span><span class="nf">IsDir</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; &#34;</span><span class="p">,</span> <span class="nx">entry</span><span class="p">.</span><span class="nf">Name</span><span class="p">(),</span> <span class="nx">entry</span><span class="p">.</span><span class="nf">IsDir</span><span class="p">())</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -213,10 +196,8 @@ similarly to <code>cd</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Chdir</span><span class="p">(</span><span class="s">&#34;subdir/parent/child&#34;</span><span class="p">)</span>
<span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Chdir</span><span class="p">(</span><span class="s">&#34;subdir/parent/child&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -228,10 +209,8 @@ when listing the <em>current</em> directory.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">c</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">ReadDir</span><span class="p">(</span><span class="s">&#34;.&#34;</span><span class="p">)</span>
<span class="nx">c</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">ReadDir</span><span class="p">(</span><span class="s">&#34;.&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -241,11 +220,10 @@ when listing the <em>current</em> directory.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Listing subdir/parent/child&#34;</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Listing subdir/parent/child&#34;</span><span class="p">)</span>
<span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">entry</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">c</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">entry</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">c</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; &#34;</span><span class="p">,</span> <span class="nx">entry</span><span class="p">.</span><span class="nf">Name</span><span class="p">(),</span> <span class="nx">entry</span><span class="p">.</span><span class="nf">IsDir</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; &#34;</span><span class="p">,</span> <span class="nx">entry</span><span class="p">.</span><span class="nf">Name</span><span class="p">(),</span> <span class="nx">entry</span><span class="p">.</span><span class="nf">IsDir</span><span class="p">())</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -256,10 +234,8 @@ when listing the <em>current</em> directory.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Chdir</span><span class="p">(</span><span class="s">&#34;../../..&#34;</span><span class="p">)</span>
<span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Chdir</span><span class="p">(</span><span class="s">&#34;../../..&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -273,11 +249,9 @@ directory visited.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Visiting subdir&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Visiting subdir&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">err</span> <span class="p">=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Walk</span><span class="p">(</span><span class="s">&#34;subdir&#34;</span><span class="p">,</span> <span class="nx">visit</span><span class="p">)</span>
<span class="nx">err</span> <span class="p">=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Walk</span><span class="p">(</span><span class="s">&#34;subdir&#34;</span><span class="p">,</span> <span class="nx">visit</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -289,15 +263,13 @@ recursively by <code>filepath.Walk</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">visit</span><span class="p">(</span><span class="nx">p</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">info</span> <span class="nx">os</span><span class="p">.</span><span class="nx">FileInfo</span><span class="p">,</span> <span class="nx">err</span> <span class="kt">error</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">visit</span><span class="p">(</span><span class="nx">p</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">info</span> <span class="nx">os</span><span class="p">.</span><span class="nx">FileInfo</span><span class="p">,</span> <span class="nx">err</span> <span class="kt">error</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">err</span>
<span class="k">return</span> <span class="nx">err</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; &#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">,</span> <span class="nx">info</span><span class="p">.</span><span class="nf">IsDir</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34; &#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">,</span> <span class="nx">info</span><span class="p">.</span><span class="nf">IsDir</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="kc">nil</span>
<span class="k">return</span> <span class="kc">nil</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -311,21 +283,21 @@ recursively by <code>filepath.Walk</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run directories.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run directories.go
<span class="go">Listing subdir/parent </span></span><span class="line"><span class="cl"><span class="go">Listing subdir/parent
</span><span class="go"> child true </span></span></span><span class="line"><span class="cl"><span class="go"> child true
</span><span class="go"> file2 false </span></span></span><span class="line"><span class="cl"><span class="go"> file2 false
</span><span class="go"> file3 false </span></span></span><span class="line"><span class="cl"><span class="go"> file3 false
</span><span class="go">Listing subdir/parent/child </span></span></span><span class="line"><span class="cl"><span class="go">Listing subdir/parent/child
</span><span class="go"> file4 false </span></span></span><span class="line"><span class="cl"><span class="go"> file4 false
</span><span class="go">Visiting subdir </span></span></span><span class="line"><span class="cl"><span class="go">Visiting subdir
</span><span class="go"> subdir true </span></span></span><span class="line"><span class="cl"><span class="go"> subdir true
</span><span class="go"> subdir/file1 false </span></span></span><span class="line"><span class="cl"><span class="go"> subdir/file1 false
</span><span class="go"> subdir/parent true </span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent true
</span><span class="go"> subdir/parent/child true </span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent/child true
</span><span class="go"> subdir/parent/child/file4 false </span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent/child/file4 false
</span><span class="go"> subdir/parent/file2 false </span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent/file2 false
</span><span class="go"> subdir/parent/file3 false</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent/file3 false</span></span></span></code></pre>
</td> </td>
</tr> </tr>

73
public/embed-directive generated
View File

@ -36,9 +36,7 @@ build time. Read more about the embed directive
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/6m2ll-D52BB"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/6m2ll-D52BB"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
<span class="kn">package</span> <span class="nx">main</span>
</pre>
</td> </td>
</tr> </tr>
@ -50,11 +48,9 @@ identifiers from this package, you can do a blank import with <code>_ &quot;embe
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="kn">import</span> <span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;embed&#34;</span>
<span class="s">&#34;embed&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
<span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -67,10 +63,8 @@ Go source file. This directive embeds the contents of the file into the
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="c1">//go:embed folder/single_file.txt
<span class="c1">//go:embed folder/single_file.txt </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">var</span> <span class="nx">fileString</span> <span class="kt">string</span></span></span></code></pre>
</span><span class="c1"></span><span class="kd">var</span> <span class="nx">fileString</span> <span class="kt">string</span>
</pre>
</td> </td>
</tr> </tr>
@ -81,10 +75,8 @@ Go source file. This directive embeds the contents of the file into the
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="c1">//go:embed folder/single_file.txt
<span class="c1">//go:embed folder/single_file.txt </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">var</span> <span class="nx">fileByte</span> <span class="p">[]</span><span class="kt">byte</span></span></span></code></pre>
</span><span class="c1"></span><span class="kd">var</span> <span class="nx">fileByte</span> <span class="p">[]</span><span class="kt">byte</span>
</pre>
</td> </td>
</tr> </tr>
@ -97,11 +89,9 @@ implements a simple virtual file system.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="c1">//go:embed folder/single_file.txt
<span class="c1">//go:embed folder/single_file.txt </span></span></span><span class="line"><span class="cl"><span class="c1">//go:embed folder/*.hash
</span><span class="c1">//go:embed folder/*.hash </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">var</span> <span class="nx">folder</span> <span class="nx">embed</span><span class="p">.</span><span class="nx">FS</span></span></span></code></pre>
</span><span class="c1"></span><span class="kd">var</span> <span class="nx">folder</span> <span class="nx">embed</span><span class="p">.</span><span class="nx">FS</span>
</pre>
</td> </td>
</tr> </tr>
@ -111,8 +101,7 @@ implements a simple virtual file system.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -123,10 +112,8 @@ implements a simple virtual file system.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="nx">fileString</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="nx">fileString</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">fileByte</span><span class="p">))</span></span></span></code></pre>
<span class="nb">print</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">fileByte</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -137,10 +124,8 @@ implements a simple virtual file system.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">content1</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">folder</span><span class="p">.</span><span class="nf">ReadFile</span><span class="p">(</span><span class="s">&#34;folder/file1.hash&#34;</span><span class="p">)</span>
<span class="nx">content1</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">folder</span><span class="p">.</span><span class="nf">ReadFile</span><span class="p">(</span><span class="s">&#34;folder/file1.hash&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">content1</span><span class="p">))</span></span></span></code></pre>
<span class="nb">print</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">content1</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -150,10 +135,9 @@ implements a simple virtual file system.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="nx">content2</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">folder</span><span class="p">.</span><span class="nf">ReadFile</span><span class="p">(</span><span class="s">&#34;folder/file2.hash&#34;</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">content2</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">folder</span><span class="p">.</span><span class="nf">ReadFile</span><span class="p">(</span><span class="s">&#34;folder/file2.hash&#34;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">content2</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">content2</span><span class="p">))</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -170,11 +154,10 @@ this example can only be run on your local machine.)</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> mkdir -p folder
<span class="gp">$</span> mkdir -p folder </span></span><span class="line"><span class="cl"><span class="gp">$</span> echo &#34;hello go&#34; &gt; folder/single_file.txt
<span class="gp">$</span> echo &#34;hello go&#34; &gt; folder/single_file.txt </span></span><span class="line"><span class="cl"><span class="gp">$</span> echo &#34;123&#34; &gt; folder/file1.hash
<span class="gp">$</span> echo &#34;123&#34; &gt; folder/file1.hash </span></span><span class="line"><span class="cl"><span class="gp">$</span> echo &#34;456&#34; &gt; folder/file2.hash</span></span></code></pre>
<span class="gp">$</span> echo &#34;456&#34; &gt; folder/file2.hash</pre>
</td> </td>
</tr> </tr>
@ -184,11 +167,11 @@ this example can only be run on your local machine.)</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run embed-directive.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run embed-directive.go
<span class="go">hello go </span></span><span class="line"><span class="cl"><span class="go">hello go
</span><span class="go">hello go </span></span></span><span class="line"><span class="cl"><span class="go">hello go
</span><span class="go">123 </span></span></span><span class="line"><span class="cl"><span class="go">123
</span><span class="go">456</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">456</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -45,8 +45,7 @@ Let&rsquo;s look at how to set, get, and list environment variables.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/2jmwXM264NC"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/2jmwXM264NC"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,12 +55,11 @@ Let&rsquo;s look at how to set, get, and list environment variables.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="s">&#34;strings&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;strings&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -71,8 +69,7 @@ Let&rsquo;s look at how to set, get, and list environment variables.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -86,11 +83,9 @@ environment.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">os</span><span class="p">.</span><span class="nf">Setenv</span><span class="p">(</span><span class="s">&#34;FOO&#34;</span><span class="p">,</span> <span class="s">&#34;1&#34;</span><span class="p">)</span>
<span class="nx">os</span><span class="p">.</span><span class="nf">Setenv</span><span class="p">(</span><span class="s">&#34;FOO&#34;</span><span class="p">,</span> <span class="s">&#34;1&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;FOO:&#34;</span><span class="p">,</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Getenv</span><span class="p">(</span><span class="s">&#34;FOO&#34;</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;FOO:&#34;</span><span class="p">,</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Getenv</span><span class="p">(</span><span class="s">&#34;FOO&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;BAR:&#34;</span><span class="p">,</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Getenv</span><span class="p">(</span><span class="s">&#34;BAR&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;BAR:&#34;</span><span class="p">,</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Getenv</span><span class="p">(</span><span class="s">&#34;BAR&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -104,14 +99,12 @@ get the key and value. Here we print all the keys.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Environ</span><span class="p">()</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Environ</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">pair</span> <span class="o">:=</span> <span class="nx">strings</span><span class="p">.</span><span class="nf">SplitN</span><span class="p">(</span><span class="nx">e</span><span class="p">,</span> <span class="s">&#34;=&#34;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="nx">pair</span> <span class="o">:=</span> <span class="nx">strings</span><span class="p">.</span><span class="nf">SplitN</span><span class="p">(</span><span class="nx">e</span><span class="p">,</span> <span class="s">&#34;=&#34;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">pair</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">pair</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -128,10 +121,9 @@ for <code>FOO</code> that we set in the program, but that
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run environment-variables.go
<span class="gp">$</span> go run environment-variables.go </span></span><span class="line"><span class="cl"><span class="go">FOO: 1
<span class="go">FOO: 1 </span></span></span><span class="line"><span class="cl"><span class="go">BAR: </span></span></span></code></pre>
</span><span class="go">BAR: </span></pre>
</td> </td>
</tr> </tr>
@ -143,12 +135,11 @@ particular machine.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="go">TERM_PROGRAM
<span class="go">TERM_PROGRAM </span></span></span><span class="line"><span class="cl"><span class="go">PATH
</span><span class="go">PATH </span></span></span><span class="line"><span class="cl"><span class="go">SHELL
</span><span class="go">SHELL </span></span></span><span class="line"><span class="cl"><span class="go">...
</span><span class="go">... </span></span></span><span class="line"><span class="cl"><span class="go">FOO</span></span></span></code></pre>
</span><span class="go">FOO</span></pre>
</td> </td>
</tr> </tr>
@ -160,11 +151,10 @@ program picks that value up.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> BAR=2 go run environment-variables.go
<span class="gp">$</span> BAR=2 go run environment-variables.go </span></span><span class="line"><span class="cl"><span class="go">FOO: 1
<span class="go">FOO: 1 </span></span></span><span class="line"><span class="cl"><span class="go">BAR: 2
</span><span class="go">BAR: 2 </span></span></span><span class="line"><span class="cl"><span class="go">...</span></span></span></code></pre>
</span><span class="go">...</span></pre>
</td> </td>
</tr> </tr>

50
public/epoch generated
View File

@ -45,8 +45,7 @@ Here&rsquo;s how to do it in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/lRmD1EWHHPz"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/lRmD1EWHHPz"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,11 +55,10 @@ Here&rsquo;s how to do it in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -70,8 +68,7 @@ Here&rsquo;s how to do it in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,10 +81,8 @@ milliseconds or nanoseconds, respectively.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">now</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span>
<span class="nx">now</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">now</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">now</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -97,10 +92,9 @@ milliseconds or nanoseconds, respectively.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">now</span><span class="p">.</span><span class="nf">Unix</span><span class="p">())</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">now</span><span class="p">.</span><span class="nf">Unix</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">now</span><span class="p">.</span><span class="nf">UnixMilli</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">now</span><span class="p">.</span><span class="nf">UnixMilli</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">now</span><span class="p">.</span><span class="nf">UnixNano</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">now</span><span class="p">.</span><span class="nf">UnixNano</span><span class="p">())</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -112,11 +106,9 @@ since the epoch into the corresponding <code>time</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nf">Unix</span><span class="p">(</span><span class="nx">now</span><span class="p">.</span><span class="nf">Unix</span><span class="p">(),</span> <span class="mi">0</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nf">Unix</span><span class="p">(</span><span class="nx">now</span><span class="p">.</span><span class="nf">Unix</span><span class="p">(),</span> <span class="mi">0</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nf">Unix</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">now</span><span class="p">.</span><span class="nf">UnixNano</span><span class="p">()))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nf">Unix</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">now</span><span class="p">.</span><span class="nf">UnixNano</span><span class="p">()))</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -130,13 +122,13 @@ since the epoch into the corresponding <code>time</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run epoch.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run epoch.go
<span class="go">2012-10-31 16:13:58.292387 +0000 UTC </span></span><span class="line"><span class="cl"><span class="go">2012-10-31 16:13:58.292387 +0000 UTC
</span><span class="go">1351700038 </span></span></span><span class="line"><span class="cl"><span class="go">1351700038
</span><span class="go">1351700038292 </span></span></span><span class="line"><span class="cl"><span class="go">1351700038292
</span><span class="go">1351700038292387000 </span></span></span><span class="line"><span class="cl"><span class="go">1351700038292387000
</span><span class="go">2012-10-31 16:13:58 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">2012-10-31 16:13:58 +0000 UTC
</span><span class="go">2012-10-31 16:13:58.292387 +0000 UTC</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">2012-10-31 16:13:58.292387 +0000 UTC</span></span></span></code></pre>
</td> </td>
</tr> </tr>

124
public/errors generated
View File

@ -49,8 +49,7 @@ non-error tasks.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/NiJOpCPO3L0"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/NiJOpCPO3L0"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -60,11 +59,10 @@ non-error tasks.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;errors&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;errors&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -76,10 +74,8 @@ have type <code>error</code>, a built-in interface.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">f1</span><span class="p">(</span><span class="nx">arg</span> <span class="kt">int</span><span class="p">)</span> <span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">f1</span><span class="p">(</span><span class="nx">arg</span> <span class="kt">int</span><span class="p">)</span> <span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">arg</span> <span class="o">==</span> <span class="mi">42</span> <span class="p">{</span></span></span></code></pre>
<span class="k">if</span> <span class="nx">arg</span> <span class="o">==</span> <span class="mi">42</span> <span class="p">{</span>
</pre>
</td> </td>
</tr> </tr>
@ -91,9 +87,7 @@ with the given error message.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="nx">errors</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="s">&#34;can&#39;t work with 42&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="nx">errors</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="s">&#34;can&#39;t work with 42&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -103,8 +97,7 @@ with the given error message.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="p">}</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -116,10 +109,8 @@ there was no error.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">arg</span> <span class="o">+</span> <span class="mi">3</span><span class="p">,</span> <span class="kc">nil</span>
<span class="k">return</span> <span class="nx">arg</span> <span class="o">+</span> <span class="mi">3</span><span class="p">,</span> <span class="kc">nil</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -133,12 +124,10 @@ to explicitly represent an argument error.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">argError</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">argError</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">arg</span> <span class="kt">int</span>
<span class="nx">arg</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">prob</span> <span class="kt">string</span>
<span class="nx">prob</span> <span class="kt">string</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -148,10 +137,9 @@ to explicitly represent an argument error.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="p">(</span><span class="nx">e</span> <span class="o">*</span><span class="nx">argError</span><span class="p">)</span> <span class="nf">Error</span><span class="p">()</span> <span class="kt">string</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">e</span> <span class="o">*</span><span class="nx">argError</span><span class="p">)</span> <span class="nf">Error</span><span class="p">()</span> <span class="kt">string</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;%d - %s&#34;</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nx">arg</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nx">prob</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;%d - %s&#34;</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nx">arg</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nx">prob</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -161,9 +149,8 @@ to explicitly represent an argument error.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">f2</span><span class="p">(</span><span class="nx">arg</span> <span class="kt">int</span><span class="p">)</span> <span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">f2</span><span class="p">(</span><span class="nx">arg</span> <span class="kt">int</span><span class="p">)</span> <span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">arg</span> <span class="o">==</span> <span class="mi">42</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">arg</span> <span class="o">==</span> <span class="mi">42</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -176,12 +163,10 @@ fields <code>arg</code> and <code>prob</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">argError</span><span class="p">{</span><span class="nx">arg</span><span class="p">,</span> <span class="s">&#34;can&#39;t work with it&#34;</span><span class="p">}</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">argError</span><span class="p">{</span><span class="nx">arg</span><span class="p">,</span> <span class="s">&#34;can&#39;t work with it&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">arg</span> <span class="o">+</span> <span class="mi">3</span><span class="p">,</span> <span class="kc">nil</span>
<span class="k">return</span> <span class="nx">arg</span> <span class="o">+</span> <span class="mi">3</span><span class="p">,</span> <span class="kc">nil</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -191,8 +176,7 @@ fields <code>arg</code> and <code>prob</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -206,22 +190,20 @@ idiom in Go code.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">i</span> <span class="o">:=</span> <span class="k">range</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">7</span><span class="p">,</span> <span class="mi">42</span><span class="p">}</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">i</span> <span class="o">:=</span> <span class="k">range</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">7</span><span class="p">,</span> <span class="mi">42</span><span class="p">}</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">r</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nf">f1</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">r</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nf">f1</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;f1 failed:&#34;</span><span class="p">,</span> <span class="nx">e</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;f1 failed:&#34;</span><span class="p">,</span> <span class="nx">e</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;f1 worked:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;f1 worked:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">i</span> <span class="o">:=</span> <span class="k">range</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">7</span><span class="p">,</span> <span class="mi">42</span><span class="p">}</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">i</span> <span class="o">:=</span> <span class="k">range</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">7</span><span class="p">,</span> <span class="mi">42</span><span class="p">}</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">r</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nf">f2</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">r</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nf">f2</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;f2 failed:&#34;</span><span class="p">,</span> <span class="nx">e</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;f2 failed:&#34;</span><span class="p">,</span> <span class="nx">e</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;f2 worked:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;f2 worked:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -235,14 +217,12 @@ assertion.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nf">f2</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
<span class="nx">_</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nf">f2</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">ae</span><span class="p">,</span> <span class="nx">ok</span> <span class="o">:=</span> <span class="nx">e</span><span class="p">.(</span><span class="o">*</span><span class="nx">argError</span><span class="p">);</span> <span class="nx">ok</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">ae</span><span class="p">,</span> <span class="nx">ok</span> <span class="o">:=</span> <span class="nx">e</span><span class="p">.(</span><span class="o">*</span><span class="nx">argError</span><span class="p">);</span> <span class="nx">ok</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">ae</span><span class="p">.</span><span class="nx">arg</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">ae</span><span class="p">.</span><span class="nx">arg</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">ae</span><span class="p">.</span><span class="nx">prob</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">ae</span><span class="p">.</span><span class="nx">prob</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -256,13 +236,13 @@ assertion.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run errors.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run errors.go
<span class="go">f1 worked: 10 </span></span><span class="line"><span class="cl"><span class="go">f1 worked: 10
</span><span class="go">f1 failed: can&#39;t work with 42 </span></span></span><span class="line"><span class="cl"><span class="go">f1 failed: can&#39;t work with 42
</span><span class="go">f2 worked: 10 </span></span></span><span class="line"><span class="cl"><span class="go">f2 worked: 10
</span><span class="go">f2 failed: 42 - can&#39;t work with it </span></span></span><span class="line"><span class="cl"><span class="go">f2 failed: 42 - can&#39;t work with it
</span><span class="go">42 </span></span></span><span class="line"><span class="cl"><span class="go">42
</span><span class="go">can&#39;t work with it</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">can&#39;t work with it</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -50,8 +50,7 @@ function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/s9qg7olf1dM"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/s9qg7olf1dM"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -61,12 +60,11 @@ function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="s">&#34;os/exec&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os/exec&#34;</span>
<span class="s">&#34;syscall&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;syscall&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -76,8 +74,7 @@ function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -91,12 +88,10 @@ we&rsquo;ll use <code>exec.LookPath</code> to find it (probably
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">binary</span><span class="p">,</span> <span class="nx">lookErr</span> <span class="o">:=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">LookPath</span><span class="p">(</span><span class="s">&#34;ls&#34;</span><span class="p">)</span>
<span class="nx">binary</span><span class="p">,</span> <span class="nx">lookErr</span> <span class="o">:=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">LookPath</span><span class="p">(</span><span class="s">&#34;ls&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">lookErr</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">lookErr</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">lookErr</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">lookErr</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -110,9 +105,7 @@ be the program name.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">args</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;ls&#34;</span><span class="p">,</span> <span class="s">&#34;-a&#34;</span><span class="p">,</span> <span class="s">&#34;-l&#34;</span><span class="p">,</span> <span class="s">&#34;-h&#34;</span><span class="p">}</span></span></span></code></pre>
<span class="nx">args</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;ls&#34;</span><span class="p">,</span> <span class="s">&#34;-a&#34;</span><span class="p">,</span> <span class="s">&#34;-l&#34;</span><span class="p">,</span> <span class="s">&#34;-h&#34;</span><span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -125,9 +118,7 @@ environment.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">env</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Environ</span><span class="p">()</span></span></span></code></pre>
<span class="nx">env</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Environ</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -142,13 +133,11 @@ value.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">execErr</span> <span class="o">:=</span> <span class="nx">syscall</span><span class="p">.</span><span class="nf">Exec</span><span class="p">(</span><span class="nx">binary</span><span class="p">,</span> <span class="nx">args</span><span class="p">,</span> <span class="nx">env</span><span class="p">)</span>
<span class="nx">execErr</span> <span class="o">:=</span> <span class="nx">syscall</span><span class="p">.</span><span class="nf">Exec</span><span class="p">(</span><span class="nx">binary</span><span class="p">,</span> <span class="nx">args</span><span class="p">,</span> <span class="nx">env</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">execErr</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">execErr</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">execErr</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">execErr</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -163,12 +152,11 @@ value.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run execing-processes.go
<span class="gp">$</span> go run execing-processes.go </span></span><span class="line"><span class="cl"><span class="go">total 16
<span class="go">total 16 </span></span></span><span class="line"><span class="cl"><span class="go">drwxr-xr-x 4 mark 136B Oct 3 16:29 .
</span><span class="go">drwxr-xr-x 4 mark 136B Oct 3 16:29 . </span></span></span><span class="line"><span class="cl"><span class="go">drwxr-xr-x 91 mark 3.0K Oct 3 12:50 ..
</span><span class="go">drwxr-xr-x 91 mark 3.0K Oct 3 12:50 .. </span></span></span><span class="line"><span class="cl"><span class="go">-rw-r--r-- 1 mark 1.3K Oct 3 16:28 execing-processes.go</span></span></span></code></pre>
</span><span class="go">-rw-r--r-- 1 mark 1.3K Oct 3 16:28 execing-processes.go</span></pre>
</td> </td>
</tr> </tr>

39
public/exit generated
View File

@ -39,8 +39,7 @@ status.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/b9aYzlENkb__R"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/b9aYzlENkb__R"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -50,11 +49,10 @@ status.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -64,8 +62,7 @@ status.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -77,9 +74,7 @@ this <code>fmt.Println</code> will never be called.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;!&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="k">defer</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;!&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -90,10 +85,8 @@ this <code>fmt.Println</code> will never be called.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -123,9 +116,8 @@ will be picked up by <code>go</code> and printed.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run exit.go
<span class="gp">$</span> go run exit.go </span></span><span class="line"><span class="cl"><span class="go">exit status 3</span></span></span></code></pre>
<span class="go">exit status 3</span></pre>
</td> </td>
</tr> </tr>
@ -137,11 +129,10 @@ the status in the terminal.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go build exit.go
<span class="gp">$</span> go build exit.go </span></span><span class="line"><span class="cl"><span class="gp">$</span> ./exit
<span class="gp">$</span> ./exit </span></span><span class="line"><span class="cl"><span class="gp">$</span> echo $?
<span class="gp">$</span> echo $? </span></span><span class="line"><span class="cl"><span class="go">3</span></span></span></code></pre>
<span class="go">3</span></pre>
</td> </td>
</tr> </tr>

104
public/file-paths generated
View File

@ -35,9 +35,7 @@ between operating systems; <code>dir/file</code> on Linux vs.
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/5h3lUytvmyO"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/5h3lUytvmyO"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
<span class="kn">package</span> <span class="nx">main</span>
</pre>
</td> </td>
</tr> </tr>
@ -47,12 +45,11 @@ between operating systems; <code>dir/file</code> on Linux vs.
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;path/filepath&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;path/filepath&#34;</span>
<span class="s">&#34;strings&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;strings&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -62,8 +59,7 @@ between operating systems; <code>dir/file</code> on Linux vs.
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -76,10 +72,8 @@ and constructs a hierarchical path from them.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">p</span> <span class="o">:=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="s">&#34;dir1&#34;</span><span class="p">,</span> <span class="s">&#34;dir2&#34;</span><span class="p">,</span> <span class="s">&#34;filename&#34;</span><span class="p">)</span>
<span class="nx">p</span> <span class="o">:=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="s">&#34;dir1&#34;</span><span class="p">,</span> <span class="s">&#34;dir2&#34;</span><span class="p">,</span> <span class="s">&#34;filename&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;p:&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;p:&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -94,10 +88,8 @@ and directory changes.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="s">&#34;dir1//&#34;</span><span class="p">,</span> <span class="s">&#34;filename&#34;</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="s">&#34;dir1//&#34;</span><span class="p">,</span> <span class="s">&#34;filename&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="s">&#34;dir1/../dir1&#34;</span><span class="p">,</span> <span class="s">&#34;filename&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="s">&#34;dir1/../dir1&#34;</span><span class="p">,</span> <span class="s">&#34;filename&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -110,10 +102,8 @@ return both in the same call.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Dir(p):&#34;</span><span class="p">,</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Dir</span><span class="p">(</span><span class="nx">p</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Dir(p):&#34;</span><span class="p">,</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Dir</span><span class="p">(</span><span class="nx">p</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Base(p):&#34;</span><span class="p">,</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Base</span><span class="p">(</span><span class="nx">p</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Base(p):&#34;</span><span class="p">,</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Base</span><span class="p">(</span><span class="nx">p</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -124,10 +114,8 @@ return both in the same call.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">filepath</span><span class="p">.</span><span class="nf">IsAbs</span><span class="p">(</span><span class="s">&#34;dir/file&#34;</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">filepath</span><span class="p">.</span><span class="nf">IsAbs</span><span class="p">(</span><span class="s">&#34;dir/file&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">filepath</span><span class="p">.</span><span class="nf">IsAbs</span><span class="p">(</span><span class="s">&#34;/dir/file&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">filepath</span><span class="p">.</span><span class="nf">IsAbs</span><span class="p">(</span><span class="s">&#34;/dir/file&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -137,8 +125,7 @@ return both in the same call.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">filename</span> <span class="o">:=</span> <span class="s">&#34;config.json&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">filename</span> <span class="o">:=</span> <span class="s">&#34;config.json&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -150,10 +137,8 @@ can split the extension out of such names with <code>Ext</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">ext</span> <span class="o">:=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Ext</span><span class="p">(</span><span class="nx">filename</span><span class="p">)</span>
<span class="nx">ext</span> <span class="o">:=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Ext</span><span class="p">(</span><span class="nx">filename</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">ext</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">ext</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -165,9 +150,7 @@ use <code>strings.TrimSuffix</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">strings</span><span class="p">.</span><span class="nf">TrimSuffix</span><span class="p">(</span><span class="nx">filename</span><span class="p">,</span> <span class="nx">ext</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">strings</span><span class="p">.</span><span class="nf">TrimSuffix</span><span class="p">(</span><span class="nx">filename</span><span class="p">,</span> <span class="nx">ext</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -180,13 +163,11 @@ be made relative to base.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">rel</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Rel</span><span class="p">(</span><span class="s">&#34;a/b&#34;</span><span class="p">,</span> <span class="s">&#34;a/b/t/file&#34;</span><span class="p">)</span>
<span class="nx">rel</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Rel</span><span class="p">(</span><span class="s">&#34;a/b&#34;</span><span class="p">,</span> <span class="s">&#34;a/b/t/file&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">rel</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">rel</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -196,13 +177,12 @@ be made relative to base.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="nx">rel</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Rel</span><span class="p">(</span><span class="s">&#34;a/b&#34;</span><span class="p">,</span> <span class="s">&#34;a/c/t/file&#34;</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">rel</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Rel</span><span class="p">(</span><span class="s">&#34;a/b&#34;</span><span class="p">,</span> <span class="s">&#34;a/c/t/file&#34;</span><span class="p">)</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">rel</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">rel</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -216,18 +196,18 @@ be made relative to base.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run file-paths.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run file-paths.go
<span class="go">p: dir1/dir2/filename </span></span><span class="line"><span class="cl"><span class="go">p: dir1/dir2/filename
</span><span class="go">dir1/filename </span></span></span><span class="line"><span class="cl"><span class="go">dir1/filename
</span><span class="go">dir1/filename </span></span></span><span class="line"><span class="cl"><span class="go">dir1/filename
</span><span class="go">Dir(p): dir1/dir2 </span></span></span><span class="line"><span class="cl"><span class="go">Dir(p): dir1/dir2
</span><span class="go">Base(p): filename </span></span></span><span class="line"><span class="cl"><span class="go">Base(p): filename
</span><span class="go">false </span></span></span><span class="line"><span class="cl"><span class="go">false
</span><span class="go">true </span></span></span><span class="line"><span class="cl"><span class="go">true
</span><span class="go">.json </span></span></span><span class="line"><span class="cl"><span class="go">.json
</span><span class="go">config </span></span></span><span class="line"><span class="cl"><span class="go">config
</span><span class="go">t/file </span></span></span><span class="line"><span class="cl"><span class="go">t/file
</span><span class="go">../c/t/file</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">../c/t/file</span></span></span></code></pre>
</td> </td>
</tr> </tr>

77
public/for generated
View File

@ -43,8 +43,7 @@ some basic types of <code>for</code> loops.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/2-4H-ArwHHS"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/2-4H-ArwHHS"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,8 +53,7 @@ some basic types of <code>for</code> loops.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -65,8 +63,7 @@ some basic types of <code>for</code> loops.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -77,13 +74,11 @@ some basic types of <code>for</code> loops.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span>
<span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="mi">3</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="mi">3</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">i</span> <span class="p">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span>
<span class="nx">i</span> <span class="p">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -94,11 +89,9 @@ some basic types of <code>for</code> loops.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">7</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;=</span> <span class="mi">9</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">7</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;=</span> <span class="mi">9</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">j</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">j</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -111,12 +104,10 @@ the enclosing function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;loop&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;loop&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">break</span>
<span class="k">break</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -128,15 +119,13 @@ the loop.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">n</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">n</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">n</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">n</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">n</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">n</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">n</span><span class="o">%</span><span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">n</span><span class="o">%</span><span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">continue</span>
<span class="k">continue</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -150,17 +139,17 @@ the loop.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run for.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run for.go
<span class="go">1 </span></span><span class="line"><span class="cl"><span class="go">1
</span><span class="go">2 </span></span></span><span class="line"><span class="cl"><span class="go">2
</span><span class="go">3 </span></span></span><span class="line"><span class="cl"><span class="go">3
</span><span class="go">7 </span></span></span><span class="line"><span class="cl"><span class="go">7
</span><span class="go">8 </span></span></span><span class="line"><span class="cl"><span class="go">8
</span><span class="go">9 </span></span></span><span class="line"><span class="cl"><span class="go">9
</span><span class="go">loop </span></span></span><span class="line"><span class="cl"><span class="go">loop
</span><span class="go">1 </span></span></span><span class="line"><span class="cl"><span class="go">1
</span><span class="go">3 </span></span></span><span class="line"><span class="cl"><span class="go">3
</span><span class="go">5</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">5</span></span></span></code></pre>
</td> </td>
</tr> </tr>

46
public/functions generated
View File

@ -43,8 +43,7 @@ functions with a few different examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/-o49-dQfGbK"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/-o49-dQfGbK"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,8 +53,7 @@ functions with a few different examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -67,9 +65,7 @@ their sum as an <code>int</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">plus</span><span class="p">(</span><span class="nx">a</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">b</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span></span></span></code></pre>
<span class="kd">func</span> <span class="nf">plus</span><span class="p">(</span><span class="nx">a</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">b</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span>
</pre>
</td> </td>
</tr> </tr>
@ -82,10 +78,8 @@ expression.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">a</span> <span class="o">+</span> <span class="nx">b</span>
<span class="k">return</span> <span class="nx">a</span> <span class="o">+</span> <span class="nx">b</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -99,11 +93,9 @@ declares the type.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">plusPlus</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">,</span> <span class="nx">c</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">plusPlus</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">,</span> <span class="nx">c</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">a</span> <span class="o">+</span> <span class="nx">b</span> <span class="o">+</span> <span class="nx">c</span>
<span class="k">return</span> <span class="nx">a</span> <span class="o">+</span> <span class="nx">b</span> <span class="o">+</span> <span class="nx">c</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -113,8 +105,7 @@ declares the type.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -126,10 +117,8 @@ declares the type.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">res</span> <span class="o">:=</span> <span class="nf">plus</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="nx">res</span> <span class="o">:=</span> <span class="nf">plus</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;1+2 =&#34;</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;1+2 =&#34;</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -139,10 +128,9 @@ declares the type.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="nx">res</span> <span class="p">=</span> <span class="nf">plusPlus</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">res</span> <span class="p">=</span> <span class="nf">plusPlus</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;1+2+3 =&#34;</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;1+2+3 =&#34;</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -156,9 +144,9 @@ declares the type.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run functions.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run functions.go
<span class="go">1+2 = 3 </span></span><span class="line"><span class="cl"><span class="go">1+2 = 3
</span><span class="go">1+2+3 = 6</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">1+2+3 = 6</span></span></span></code></pre>
</td> </td>
</tr> </tr>

106
public/generics generated
View File

@ -43,8 +43,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/uXlb-AyeYmQ"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/uXlb-AyeYmQ"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,8 +53,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -73,15 +71,13 @@ restricted in any way (<code>any</code> is an alias for <code>interface{}</code>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nx">MapKeys</span><span class="p">[</span><span class="nx">K</span> <span class="nx">comparable</span><span class="p">,</span> <span class="nx">V</span> <span class="nx">any</span><span class="p">](</span><span class="nx">m</span> <span class="kd">map</span><span class="p">[</span><span class="nx">K</span><span class="p">]</span><span class="nx">V</span><span class="p">)</span> <span class="p">[]</span><span class="nx">K</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nx">MapKeys</span><span class="p">[</span><span class="nx">K</span> <span class="nx">comparable</span><span class="p">,</span> <span class="nx">V</span> <span class="nx">any</span><span class="p">](</span><span class="nx">m</span> <span class="kd">map</span><span class="p">[</span><span class="nx">K</span><span class="p">]</span><span class="nx">V</span><span class="p">)</span> <span class="p">[]</span><span class="nx">K</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">r</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="nx">K</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">m</span><span class="p">))</span>
<span class="nx">r</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="nx">K</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">m</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">k</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">m</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">k</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">m</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">r</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">r</span><span class="p">,</span> <span class="nx">k</span><span class="p">)</span>
<span class="nx">r</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">r</span><span class="p">,</span> <span class="nx">k</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">r</span>
<span class="k">return</span> <span class="nx">r</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -93,11 +89,9 @@ singly-linked list with values of any type.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">List</span><span class="p">[</span><span class="nx">T</span> <span class="nx">any</span><span class="p">]</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">List</span><span class="p">[</span><span class="nx">T</span> <span class="nx">any</span><span class="p">]</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">head</span><span class="p">,</span> <span class="nx">tail</span> <span class="o">*</span><span class="nx">element</span><span class="p">[</span><span class="nx">T</span><span class="p">]</span>
<span class="nx">head</span><span class="p">,</span> <span class="nx">tail</span> <span class="o">*</span><span class="nx">element</span><span class="p">[</span><span class="nx">T</span><span class="p">]</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -107,11 +101,10 @@ singly-linked list with values of any type.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">type</span> <span class="nx">element</span><span class="p">[</span><span class="nx">T</span> <span class="nx">any</span><span class="p">]</span> <span class="kd">struct</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">element</span><span class="p">[</span><span class="nx">T</span> <span class="nx">any</span><span class="p">]</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="nx">next</span> <span class="o">*</span><span class="nx">element</span><span class="p">[</span><span class="nx">T</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">next</span> <span class="o">*</span><span class="nx">element</span><span class="p">[</span><span class="nx">T</span><span class="p">]</span>
<span class="nx">val</span> <span class="nx">T</span> </span></span><span class="line"><span class="cl"> <span class="nx">val</span> <span class="nx">T</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -124,17 +117,15 @@ parameters in place. The type is <code>List[T]</code>, not <code>List</code>.</p
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">lst</span> <span class="o">*</span><span class="nx">List</span><span class="p">[</span><span class="nx">T</span><span class="p">])</span> <span class="nf">Push</span><span class="p">(</span><span class="nx">v</span> <span class="nx">T</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">lst</span> <span class="o">*</span><span class="nx">List</span><span class="p">[</span><span class="nx">T</span><span class="p">])</span> <span class="nf">Push</span><span class="p">(</span><span class="nx">v</span> <span class="nx">T</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span> <span class="o">==</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span> <span class="o">==</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">lst</span><span class="p">.</span><span class="nx">head</span> <span class="p">=</span> <span class="o">&amp;</span><span class="nx">element</span><span class="p">[</span><span class="nx">T</span><span class="p">]{</span><span class="nx">val</span><span class="p">:</span> <span class="nx">v</span><span class="p">}</span>
<span class="nx">lst</span><span class="p">.</span><span class="nx">head</span> <span class="p">=</span> <span class="o">&amp;</span><span class="nx">element</span><span class="p">[</span><span class="nx">T</span><span class="p">]{</span><span class="nx">val</span><span class="p">:</span> <span class="nx">v</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span> <span class="p">=</span> <span class="nx">lst</span><span class="p">.</span><span class="nx">head</span>
<span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span> <span class="p">=</span> <span class="nx">lst</span><span class="p">.</span><span class="nx">head</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span><span class="p">.</span><span class="nx">next</span> <span class="p">=</span> <span class="o">&amp;</span><span class="nx">element</span><span class="p">[</span><span class="nx">T</span><span class="p">]{</span><span class="nx">val</span><span class="p">:</span> <span class="nx">v</span><span class="p">}</span>
<span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span><span class="p">.</span><span class="nx">next</span> <span class="p">=</span> <span class="o">&amp;</span><span class="nx">element</span><span class="p">[</span><span class="nx">T</span><span class="p">]{</span><span class="nx">val</span><span class="p">:</span> <span class="nx">v</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span> <span class="p">=</span> <span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span><span class="p">.</span><span class="nx">next</span>
<span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span> <span class="p">=</span> <span class="nx">lst</span><span class="p">.</span><span class="nx">tail</span><span class="p">.</span><span class="nx">next</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -144,14 +135,13 @@ parameters in place. The type is <code>List[T]</code>, not <code>List</code>.</p
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="p">(</span><span class="nx">lst</span> <span class="o">*</span><span class="nx">List</span><span class="p">[</span><span class="nx">T</span><span class="p">])</span> <span class="nf">GetAll</span><span class="p">()</span> <span class="p">[]</span><span class="nx">T</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">lst</span> <span class="o">*</span><span class="nx">List</span><span class="p">[</span><span class="nx">T</span><span class="p">])</span> <span class="nf">GetAll</span><span class="p">()</span> <span class="p">[]</span><span class="nx">T</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">elems</span> <span class="p">[]</span><span class="nx">T</span> </span></span><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">elems</span> <span class="p">[]</span><span class="nx">T</span>
<span class="k">for</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">lst</span><span class="p">.</span><span class="nx">head</span><span class="p">;</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span><span class="p">;</span> <span class="nx">e</span> <span class="p">=</span> <span class="nx">e</span><span class="p">.</span><span class="nx">next</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">lst</span><span class="p">.</span><span class="nx">head</span><span class="p">;</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span><span class="p">;</span> <span class="nx">e</span> <span class="p">=</span> <span class="nx">e</span><span class="p">.</span><span class="nx">next</span> <span class="p">{</span>
<span class="nx">elems</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">elems</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nx">val</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">elems</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">elems</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nx">val</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="k">return</span> <span class="nx">elems</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">elems</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -161,9 +151,8 @@ parameters in place. The type is <code>List[T]</code>, not <code>List</code>.</p
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">m</span> <span class="p">=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">int</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span><span class="mi">1</span><span class="p">:</span> <span class="s">&#34;2&#34;</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s">&#34;4&#34;</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="s">&#34;8&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">m</span> <span class="p">=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">int</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span><span class="mi">1</span><span class="p">:</span> <span class="s">&#34;2&#34;</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s">&#34;4&#34;</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="s">&#34;8&#34;</span><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -178,9 +167,7 @@ automatically.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;keys:&#34;</span><span class="p">,</span> <span class="nf">MapKeys</span><span class="p">(</span><span class="nx">m</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;keys:&#34;</span><span class="p">,</span> <span class="nf">MapKeys</span><span class="p">(</span><span class="nx">m</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -191,9 +178,7 @@ automatically.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">_</span> <span class="p">=</span> <span class="nx">MapKeys</span><span class="p">[</span><span class="kt">int</span><span class="p">,</span> <span class="kt">string</span><span class="p">](</span><span class="nx">m</span><span class="p">)</span></span></span></code></pre>
<span class="nx">_</span> <span class="p">=</span> <span class="nx">MapKeys</span><span class="p">[</span><span class="kt">int</span><span class="p">,</span> <span class="kt">string</span><span class="p">](</span><span class="nx">m</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -203,13 +188,12 @@ automatically.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="nx">lst</span> <span class="o">:=</span> <span class="nx">List</span><span class="p">[</span><span class="kt">int</span><span class="p">]{}</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">lst</span> <span class="o">:=</span> <span class="nx">List</span><span class="p">[</span><span class="kt">int</span><span class="p">]{}</span>
<span class="nx">lst</span><span class="p">.</span><span class="nf">Push</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">lst</span><span class="p">.</span><span class="nf">Push</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="nx">lst</span><span class="p">.</span><span class="nf">Push</span><span class="p">(</span><span class="mi">13</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">lst</span><span class="p">.</span><span class="nf">Push</span><span class="p">(</span><span class="mi">13</span><span class="p">)</span>
<span class="nx">lst</span><span class="p">.</span><span class="nf">Push</span><span class="p">(</span><span class="mi">23</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">lst</span><span class="p">.</span><span class="nf">Push</span><span class="p">(</span><span class="mi">23</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;list:&#34;</span><span class="p">,</span> <span class="nx">lst</span><span class="p">.</span><span class="nf">GetAll</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;list:&#34;</span><span class="p">,</span> <span class="nx">lst</span><span class="p">.</span><span class="nf">GetAll</span><span class="p">())</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -223,9 +207,9 @@ automatically.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run generics.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run generics.go
<span class="go">keys: [4 1 2] </span></span><span class="line"><span class="cl"><span class="go">keys: [4 1 2]
</span><span class="go">list: [10 13 23]</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">list: [10 13 23]</span></span></span></code></pre>
</td> </td>
</tr> </tr>

69
public/goroutines generated
View File

@ -42,8 +42,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/I7scqRijEJt"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/I7scqRijEJt"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -53,11 +52,10 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -67,12 +65,11 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">f</span><span class="p">(</span><span class="nx">from</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">f</span><span class="p">(</span><span class="nx">from</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">from</span><span class="p">,</span> <span class="s">&#34;:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">from</span><span class="p">,</span> <span class="s">&#34;:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -82,8 +79,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -96,9 +92,7 @@ synchronously.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">f</span><span class="p">(</span><span class="s">&#34;direct&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nf">f</span><span class="p">(</span><span class="s">&#34;direct&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -111,9 +105,7 @@ concurrently with the calling one.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="nf">f</span><span class="p">(</span><span class="s">&#34;goroutine&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="k">go</span> <span class="nf">f</span><span class="p">(</span><span class="s">&#34;goroutine&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -125,11 +117,9 @@ function call.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">(</span><span class="nx">msg</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">(</span><span class="nx">msg</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">msg</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">msg</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}(</span><span class="s">&#34;going&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="p">}(</span><span class="s">&#34;going&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -142,11 +132,9 @@ separate goroutines now. Wait for them to finish
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;done&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;done&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -165,16 +153,15 @@ Go runtime.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run goroutines.go
<span class="gp">$</span> go run goroutines.go </span></span><span class="line"><span class="cl"><span class="go">direct : 0
<span class="go">direct : 0 </span></span></span><span class="line"><span class="cl"><span class="go">direct : 1
</span><span class="go">direct : 1 </span></span></span><span class="line"><span class="cl"><span class="go">direct : 2
</span><span class="go">direct : 2 </span></span></span><span class="line"><span class="cl"><span class="go">goroutine : 0
</span><span class="go">goroutine : 0 </span></span></span><span class="line"><span class="cl"><span class="go">going
</span><span class="go">going </span></span></span><span class="line"><span class="cl"><span class="go">goroutine : 1
</span><span class="go">goroutine : 1 </span></span></span><span class="line"><span class="cl"><span class="go">goroutine : 2
</span><span class="go">goroutine : 2 </span></span></span><span class="line"><span class="cl"><span class="go">done</span></span></span></code></pre>
</span><span class="go">done</span></pre>
</td> </td>
</tr> </tr>

31
public/hello-world generated
View File

@ -29,9 +29,7 @@ message. Here&rsquo;s the full source code.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/NeviD0awXjt"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/NeviD0awXjt"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
<span class="kn">package</span> <span class="nx">main</span>
</pre>
</td> </td>
</tr> </tr>
@ -41,8 +39,7 @@ message. Here&rsquo;s the full source code.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -52,10 +49,9 @@ message. Here&rsquo;s the full source code.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;hello world&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;hello world&#34;</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -71,9 +67,8 @@ use <code>go run</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run hello-world.go
<span class="gp">$</span> go run hello-world.go </span></span><span class="line"><span class="cl"><span class="go">hello world</span></span></span></code></pre>
<span class="go">hello world</span></pre>
</td> </td>
</tr> </tr>
@ -85,10 +80,9 @@ binaries. We can do this using <code>go build</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go build hello-world.go
<span class="gp">$</span> go build hello-world.go </span></span><span class="line"><span class="cl"><span class="gp">$</span> ls
<span class="gp">$</span> ls </span></span><span class="line"><span class="cl"><span class="go">hello-world hello-world.go</span></span></span></code></pre>
<span class="go">hello-world hello-world.go</span></pre>
</td> </td>
</tr> </tr>
@ -99,9 +93,8 @@ binaries. We can do this using <code>go build</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./hello-world
<span class="gp">$</span> ./hello-world </span></span><span class="line"><span class="cl"><span class="go">hello world</span></span></span></code></pre>
<span class="go">hello world</span></pre>
</td> </td>
</tr> </tr>

67
public/http-client generated
View File

@ -35,9 +35,7 @@ HTTP requests.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/vFW_el7oHMk"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/vFW_el7oHMk"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
<span class="kn">package</span> <span class="nx">main</span>
</pre>
</td> </td>
</tr> </tr>
@ -47,12 +45,11 @@ HTTP requests.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;bufio&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;bufio&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;net/http&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;net/http&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -62,8 +59,7 @@ HTTP requests.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -78,13 +74,11 @@ settings.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">resp</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">http</span><span class="p">.</span><span class="nf">Get</span><span class="p">(</span><span class="s">&#34;https://gobyexample.com&#34;</span><span class="p">)</span>
<span class="nx">resp</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">http</span><span class="p">.</span><span class="nf">Get</span><span class="p">(</span><span class="s">&#34;https://gobyexample.com&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nx">resp</span><span class="p">.</span><span class="nx">Body</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span></span></span></code></pre>
<span class="k">defer</span> <span class="nx">resp</span><span class="p">.</span><span class="nx">Body</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -95,9 +89,7 @@ settings.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Response status:&#34;</span><span class="p">,</span> <span class="nx">resp</span><span class="p">.</span><span class="nx">Status</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Response status:&#34;</span><span class="p">,</span> <span class="nx">resp</span><span class="p">.</span><span class="nx">Status</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -108,12 +100,10 @@ settings.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">scanner</span> <span class="o">:=</span> <span class="nx">bufio</span><span class="p">.</span><span class="nf">NewScanner</span><span class="p">(</span><span class="nx">resp</span><span class="p">.</span><span class="nx">Body</span><span class="p">)</span>
<span class="nx">scanner</span> <span class="o">:=</span> <span class="nx">bufio</span><span class="p">.</span><span class="nf">NewScanner</span><span class="p">(</span><span class="nx">resp</span><span class="p">.</span><span class="nx">Body</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">scanner</span><span class="p">.</span><span class="nf">Scan</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">scanner</span><span class="p">.</span><span class="nf">Scan</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">scanner</span><span class="p">.</span><span class="nf">Text</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">scanner</span><span class="p">.</span><span class="nf">Text</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -123,11 +113,10 @@ settings.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="k">if</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">scanner</span><span class="p">.</span><span class="nf">Err</span><span class="p">();</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">scanner</span><span class="p">.</span><span class="nf">Err</span><span class="p">();</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -141,13 +130,13 @@ settings.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run http-clients.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run http-clients.go
<span class="go">Response status: 200 OK </span></span><span class="line"><span class="cl"><span class="go">Response status: 200 OK
</span><span class="go">&lt;!DOCTYPE html&gt; </span></span></span><span class="line"><span class="cl"><span class="go">&lt;!DOCTYPE html&gt;
</span><span class="go">&lt;html&gt; </span></span></span><span class="line"><span class="cl"><span class="go">&lt;html&gt;
</span><span class="go"> &lt;head&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;head&gt;
</span><span class="go"> &lt;meta charset=&#34;utf-8&#34;&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;meta charset=&#34;utf-8&#34;&gt;
</span><span class="go"> &lt;title&gt;Go by Example&lt;/title&gt;</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;title&gt;Go by Example&lt;/title&gt;</span></span></span></code></pre>
</td> </td>
</tr> </tr>

63
public/http-server generated
View File

@ -33,9 +33,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/s3xMMt9Ytry"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/s3xMMt9Ytry"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
<span class="kn">package</span> <span class="nx">main</span>
</pre>
</td> </td>
</tr> </tr>
@ -45,11 +43,10 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;net/http&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;net/http&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -64,9 +61,7 @@ on functions with the appropriate signature.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">hello</span><span class="p">(</span><span class="nx">w</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">{</span></span></span></code></pre>
<span class="kd">func</span> <span class="nf">hello</span><span class="p">(</span><span class="nx">w</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">{</span>
</pre>
</td> </td>
</tr> </tr>
@ -81,10 +76,8 @@ HTTP response. Here our simple response is just
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="s">&#34;hello\n&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="s">&#34;hello\n&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -94,8 +87,7 @@ HTTP response. Here our simple response is just
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">headers</span><span class="p">(</span><span class="nx">w</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">headers</span><span class="p">(</span><span class="nx">w</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -108,14 +100,12 @@ headers and echoing them into the response body.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">headers</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">req</span><span class="p">.</span><span class="nx">Header</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">headers</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">req</span><span class="p">.</span><span class="nx">Header</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">h</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">headers</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">h</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">headers</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="s">&#34;%v: %v\n&#34;</span><span class="p">,</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">h</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="s">&#34;%v: %v\n&#34;</span><span class="p">,</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">h</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -125,8 +115,7 @@ headers and echoing them into the response body.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -140,10 +129,8 @@ takes a function as an argument.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">http</span><span class="p">.</span><span class="nf">HandleFunc</span><span class="p">(</span><span class="s">&#34;/hello&#34;</span><span class="p">,</span> <span class="nx">hello</span><span class="p">)</span>
<span class="nx">http</span><span class="p">.</span><span class="nf">HandleFunc</span><span class="p">(</span><span class="s">&#34;/hello&#34;</span><span class="p">,</span> <span class="nx">hello</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">http</span><span class="p">.</span><span class="nf">HandleFunc</span><span class="p">(</span><span class="s">&#34;/headers&#34;</span><span class="p">,</span> <span class="nx">headers</span><span class="p">)</span></span></span></code></pre>
<span class="nx">http</span><span class="p">.</span><span class="nf">HandleFunc</span><span class="p">(</span><span class="s">&#34;/headers&#34;</span><span class="p">,</span> <span class="nx">headers</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -156,10 +143,8 @@ router we&rsquo;ve just set up.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">http</span><span class="p">.</span><span class="nf">ListenAndServe</span><span class="p">(</span><span class="s">&#34;:8090&#34;</span><span class="p">,</span> <span class="kc">nil</span><span class="p">)</span>
<span class="nx">http</span><span class="p">.</span><span class="nf">ListenAndServe</span><span class="p">(</span><span class="s">&#34;:8090&#34;</span><span class="p">,</span> <span class="kc">nil</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -174,8 +159,7 @@ router we&rsquo;ve just set up.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run http-servers.go &amp;</span></span></code></pre>
<span class="gp">$</span> go run http-servers.go &amp;</pre>
</td> </td>
</tr> </tr>
@ -186,9 +170,8 @@ router we&rsquo;ve just set up.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> curl localhost:8090/hello
<span class="gp">$</span> curl localhost:8090/hello </span></span><span class="line"><span class="cl"><span class="go">hello</span></span></span></code></pre>
<span class="go">hello</span></pre>
</td> </td>
</tr> </tr>

55
public/if-else generated
View File

@ -43,8 +43,7 @@ straight-forward.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/U7xcpdutgCJ"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/U7xcpdutgCJ"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,8 +53,7 @@ straight-forward.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -65,8 +63,7 @@ straight-forward.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -77,13 +74,11 @@ straight-forward.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">if</span> <span class="mi">7</span><span class="o">%</span><span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span>
<span class="k">if</span> <span class="mi">7</span><span class="o">%</span><span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;7 is even&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;7 is even&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;7 is odd&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;7 is odd&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -94,11 +89,9 @@ straight-forward.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">if</span> <span class="mi">8</span><span class="o">%</span><span class="mi">4</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span>
<span class="k">if</span> <span class="mi">8</span><span class="o">%</span><span class="mi">4</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;8 is divisible by 4&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;8 is divisible by 4&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -111,16 +104,14 @@ and all subsequent branches.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">num</span> <span class="o">:=</span> <span class="mi">9</span><span class="p">;</span> <span class="nx">num</span> <span class="p">&lt;</span> <span class="mi">0</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">num</span> <span class="o">:=</span> <span class="mi">9</span><span class="p">;</span> <span class="nx">num</span> <span class="p">&lt;</span> <span class="mi">0</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">num</span><span class="p">,</span> <span class="s">&#34;is negative&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">num</span><span class="p">,</span> <span class="s">&#34;is negative&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="nx">num</span> <span class="p">&lt;</span> <span class="mi">10</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="nx">num</span> <span class="p">&lt;</span> <span class="mi">10</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">num</span><span class="p">,</span> <span class="s">&#34;has 1 digit&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">num</span><span class="p">,</span> <span class="s">&#34;has 1 digit&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">num</span><span class="p">,</span> <span class="s">&#34;has multiple digits&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">num</span><span class="p">,</span> <span class="s">&#34;has multiple digits&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -146,10 +137,10 @@ in Go, but that the braces are required.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run if-else.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run if-else.go
<span class="go">7 is odd </span></span><span class="line"><span class="cl"><span class="go">7 is odd
</span><span class="go">8 is divisible by 4 </span></span></span><span class="line"><span class="cl"><span class="go">8 is divisible by 4
</span><span class="go">9 has 1 digit</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">9 has 1 digit</span></span></span></code></pre>
</td> </td>
</tr> </tr>

105
public/interfaces generated
View File

@ -43,8 +43,7 @@ signatures.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/XJASG4MxBQr"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/XJASG4MxBQr"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,11 +53,10 @@ signatures.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;math&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;math&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,12 +67,10 @@ signatures.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">geometry</span> <span class="kd">interface</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">geometry</span> <span class="kd">interface</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nf">area</span><span class="p">()</span> <span class="kt">float64</span>
<span class="nf">area</span><span class="p">()</span> <span class="kt">float64</span> </span></span><span class="line"><span class="cl"> <span class="nf">perim</span><span class="p">()</span> <span class="kt">float64</span>
<span class="nf">perim</span><span class="p">()</span> <span class="kt">float64</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -86,14 +82,12 @@ signatures.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">rect</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">rect</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">width</span><span class="p">,</span> <span class="nx">height</span> <span class="kt">float64</span>
<span class="nx">width</span><span class="p">,</span> <span class="nx">height</span> <span class="kt">float64</span> </span></span><span class="line"><span class="cl"><span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">circle</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">circle</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">radius</span> <span class="kt">float64</span>
<span class="nx">radius</span> <span class="kt">float64</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -106,14 +100,12 @@ implement <code>geometry</code> on <code>rect</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">r</span> <span class="nx">rect</span><span class="p">)</span> <span class="nf">area</span><span class="p">()</span> <span class="kt">float64</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">r</span> <span class="nx">rect</span><span class="p">)</span> <span class="nf">area</span><span class="p">()</span> <span class="kt">float64</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">r</span><span class="p">.</span><span class="nx">width</span> <span class="o">*</span> <span class="nx">r</span><span class="p">.</span><span class="nx">height</span>
<span class="k">return</span> <span class="nx">r</span><span class="p">.</span><span class="nx">width</span> <span class="o">*</span> <span class="nx">r</span><span class="p">.</span><span class="nx">height</span> </span></span><span class="line"><span class="cl"><span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">r</span> <span class="nx">rect</span><span class="p">)</span> <span class="nf">perim</span><span class="p">()</span> <span class="kt">float64</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">r</span> <span class="nx">rect</span><span class="p">)</span> <span class="nf">perim</span><span class="p">()</span> <span class="kt">float64</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">2</span><span class="o">*</span><span class="nx">r</span><span class="p">.</span><span class="nx">width</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">r</span><span class="p">.</span><span class="nx">height</span>
<span class="k">return</span> <span class="mi">2</span><span class="o">*</span><span class="nx">r</span><span class="p">.</span><span class="nx">width</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">r</span><span class="p">.</span><span class="nx">height</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -124,14 +116,12 @@ implement <code>geometry</code> on <code>rect</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">c</span> <span class="nx">circle</span><span class="p">)</span> <span class="nf">area</span><span class="p">()</span> <span class="kt">float64</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">c</span> <span class="nx">circle</span><span class="p">)</span> <span class="nf">area</span><span class="p">()</span> <span class="kt">float64</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">math</span><span class="p">.</span><span class="nx">Pi</span> <span class="o">*</span> <span class="nx">c</span><span class="p">.</span><span class="nx">radius</span> <span class="o">*</span> <span class="nx">c</span><span class="p">.</span><span class="nx">radius</span>
<span class="k">return</span> <span class="nx">math</span><span class="p">.</span><span class="nx">Pi</span> <span class="o">*</span> <span class="nx">c</span><span class="p">.</span><span class="nx">radius</span> <span class="o">*</span> <span class="nx">c</span><span class="p">.</span><span class="nx">radius</span> </span></span><span class="line"><span class="cl"><span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">c</span> <span class="nx">circle</span><span class="p">)</span> <span class="nf">perim</span><span class="p">()</span> <span class="kt">float64</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">c</span> <span class="nx">circle</span><span class="p">)</span> <span class="nf">perim</span><span class="p">()</span> <span class="kt">float64</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">2</span> <span class="o">*</span> <span class="nx">math</span><span class="p">.</span><span class="nx">Pi</span> <span class="o">*</span> <span class="nx">c</span><span class="p">.</span><span class="nx">radius</span>
<span class="k">return</span> <span class="mi">2</span> <span class="o">*</span> <span class="nx">math</span><span class="p">.</span><span class="nx">Pi</span> <span class="o">*</span> <span class="nx">c</span><span class="p">.</span><span class="nx">radius</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -145,13 +135,11 @@ to work on any <code>geometry</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">measure</span><span class="p">(</span><span class="nx">g</span> <span class="nx">geometry</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">measure</span><span class="p">(</span><span class="nx">g</span> <span class="nx">geometry</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">g</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">g</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">g</span><span class="p">.</span><span class="nf">area</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">g</span><span class="p">.</span><span class="nf">area</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">g</span><span class="p">.</span><span class="nf">perim</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">g</span><span class="p">.</span><span class="nf">perim</span><span class="p">())</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -161,10 +149,9 @@ to work on any <code>geometry</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">r</span> <span class="o">:=</span> <span class="nx">rect</span><span class="p">{</span><span class="nx">width</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="nx">height</span><span class="p">:</span> <span class="mi">4</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">r</span> <span class="o">:=</span> <span class="nx">rect</span><span class="p">{</span><span class="nx">width</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="nx">height</span><span class="p">:</span> <span class="mi">4</span><span class="p">}</span>
<span class="nx">c</span> <span class="o">:=</span> <span class="nx">circle</span><span class="p">{</span><span class="nx">radius</span><span class="p">:</span> <span class="mi">5</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">c</span> <span class="o">:=</span> <span class="nx">circle</span><span class="p">{</span><span class="nx">radius</span><span class="p">:</span> <span class="mi">5</span><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -178,11 +165,9 @@ these structs as arguments to <code>measure</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">measure</span><span class="p">(</span><span class="nx">r</span><span class="p">)</span>
<span class="nf">measure</span><span class="p">(</span><span class="nx">r</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">measure</span><span class="p">(</span><span class="nx">c</span><span class="p">)</span>
<span class="nf">measure</span><span class="p">(</span><span class="nx">c</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -196,13 +181,13 @@ these structs as arguments to <code>measure</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run interfaces.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run interfaces.go
<span class="go">{3 4} </span></span><span class="line"><span class="cl"><span class="go">{3 4}
</span><span class="go">12 </span></span></span><span class="line"><span class="cl"><span class="go">12
</span><span class="go">14 </span></span></span><span class="line"><span class="cl"><span class="go">14
</span><span class="go">{5} </span></span></span><span class="line"><span class="cl"><span class="go">{5}
</span><span class="go">78.53981633974483 </span></span></span><span class="line"><span class="cl"><span class="go">78.53981633974483
</span><span class="go">31.41592653589793</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">31.41592653589793</span></span></span></code></pre>
</td> </td>
</tr> </tr>

181
public/json generated
View File

@ -44,8 +44,7 @@ data types.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/JOQpRGJWAxR"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/JOQpRGJWAxR"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,12 +54,11 @@ data types.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;encoding/json&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;encoding/json&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -72,12 +70,10 @@ decoding of custom types below.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">response1</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">response1</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">Page</span> <span class="kt">int</span>
<span class="nx">Page</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">Fruits</span> <span class="p">[]</span><span class="kt">string</span>
<span class="nx">Fruits</span> <span class="p">[]</span><span class="kt">string</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -89,12 +85,10 @@ Fields must start with capital letters to be exported.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">response2</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">response2</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">Page</span> <span class="kt">int</span> <span class="s">`json:&#34;page&#34;`</span>
<span class="nx">Page</span> <span class="kt">int</span> <span class="s">`json:&#34;page&#34;`</span> </span></span><span class="line"><span class="cl"> <span class="nx">Fruits</span> <span class="p">[]</span><span class="kt">string</span> <span class="s">`json:&#34;fruits&#34;`</span>
<span class="nx">Fruits</span> <span class="p">[]</span><span class="kt">string</span> <span class="s">`json:&#34;fruits&#34;`</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -104,8 +98,7 @@ Fields must start with capital letters to be exported.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -118,10 +111,8 @@ values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">bolB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span>
<span class="nx">bolB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">bolB</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">bolB</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -131,9 +122,8 @@ values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">intB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">intB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">intB</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">intB</span><span class="p">))</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -143,9 +133,8 @@ values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">fltB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="mf">2.34</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fltB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="mf">2.34</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">fltB</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">fltB</span><span class="p">))</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -155,9 +144,8 @@ values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">strB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="s">&#34;gopher&#34;</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">strB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="s">&#34;gopher&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">strB</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">strB</span><span class="p">))</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -169,11 +157,9 @@ to JSON arrays and objects as you&rsquo;d expect.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">slcD</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">,</span> <span class="s">&#34;peach&#34;</span><span class="p">,</span> <span class="s">&#34;pear&#34;</span><span class="p">}</span>
<span class="nx">slcD</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">,</span> <span class="s">&#34;peach&#34;</span><span class="p">,</span> <span class="s">&#34;pear&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">slcB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="nx">slcD</span><span class="p">)</span>
<span class="nx">slcB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="nx">slcD</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">slcB</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">slcB</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -183,10 +169,9 @@ to JSON arrays and objects as you&rsquo;d expect.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">mapD</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s">&#34;lettuce&#34;</span><span class="p">:</span> <span class="mi">7</span><span class="p">}</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">mapD</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s">&#34;lettuce&#34;</span><span class="p">:</span> <span class="mi">7</span><span class="p">}</span>
<span class="nx">mapB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="nx">mapD</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">mapB</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="nx">mapD</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">mapB</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">mapB</span><span class="p">))</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -200,13 +185,11 @@ use those names as the JSON keys.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">res1D</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">response1</span><span class="p">{</span>
<span class="nx">res1D</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">response1</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">Page</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nx">Page</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nx">Fruits</span><span class="p">:</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">,</span> <span class="s">&#34;peach&#34;</span><span class="p">,</span> <span class="s">&#34;pear&#34;</span><span class="p">}}</span>
<span class="nx">Fruits</span><span class="p">:</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">,</span> <span class="s">&#34;peach&#34;</span><span class="p">,</span> <span class="s">&#34;pear&#34;</span><span class="p">}}</span> </span></span><span class="line"><span class="cl"> <span class="nx">res1B</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="nx">res1D</span><span class="p">)</span>
<span class="nx">res1B</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="nx">res1D</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">res1B</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">res1B</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -220,13 +203,11 @@ of such tags.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">res2D</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">response2</span><span class="p">{</span>
<span class="nx">res2D</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">response2</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">Page</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nx">Page</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nx">Fruits</span><span class="p">:</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">,</span> <span class="s">&#34;peach&#34;</span><span class="p">,</span> <span class="s">&#34;pear&#34;</span><span class="p">}}</span>
<span class="nx">Fruits</span><span class="p">:</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">,</span> <span class="s">&#34;peach&#34;</span><span class="p">,</span> <span class="s">&#34;pear&#34;</span><span class="p">}}</span> </span></span><span class="line"><span class="cl"> <span class="nx">res2B</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="nx">res2D</span><span class="p">)</span>
<span class="nx">res2B</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Marshal</span><span class="p">(</span><span class="nx">res2D</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">res2B</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">res2B</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -239,9 +220,7 @@ structure.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">byt</span> <span class="o">:=</span> <span class="p">[]</span><span class="nb">byte</span><span class="p">(</span><span class="s">`{&#34;num&#34;:6.13,&#34;strs&#34;:[&#34;a&#34;,&#34;b&#34;]}`</span><span class="p">)</span></span></span></code></pre>
<span class="nx">byt</span> <span class="o">:=</span> <span class="p">[]</span><span class="nb">byte</span><span class="p">(</span><span class="s">`{&#34;num&#34;:6.13,&#34;strs&#34;:[&#34;a&#34;,&#34;b&#34;]}`</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -255,9 +234,7 @@ to arbitrary data types.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">dat</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kd">interface</span><span class="p">{}</span></span></span></code></pre>
<span class="kd">var</span> <span class="nx">dat</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kd">interface</span><span class="p">{}</span>
</pre>
</td> </td>
</tr> </tr>
@ -269,12 +246,10 @@ associated errors.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Unmarshal</span><span class="p">(</span><span class="nx">byt</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">dat</span><span class="p">);</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">Unmarshal</span><span class="p">(</span><span class="nx">byt</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">dat</span><span class="p">);</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">dat</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">dat</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -288,10 +263,8 @@ the expected <code>float64</code> type.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">num</span> <span class="o">:=</span> <span class="nx">dat</span><span class="p">[</span><span class="s">&#34;num&#34;</span><span class="p">].(</span><span class="kt">float64</span><span class="p">)</span>
<span class="nx">num</span> <span class="o">:=</span> <span class="nx">dat</span><span class="p">[</span><span class="s">&#34;num&#34;</span><span class="p">].(</span><span class="kt">float64</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">num</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">num</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -303,11 +276,9 @@ conversions.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">strs</span> <span class="o">:=</span> <span class="nx">dat</span><span class="p">[</span><span class="s">&#34;strs&#34;</span><span class="p">].([]</span><span class="kd">interface</span><span class="p">{})</span>
<span class="nx">strs</span> <span class="o">:=</span> <span class="nx">dat</span><span class="p">[</span><span class="s">&#34;strs&#34;</span><span class="p">].([]</span><span class="kd">interface</span><span class="p">{})</span> </span></span><span class="line"><span class="cl"> <span class="nx">str1</span> <span class="o">:=</span> <span class="nx">strs</span><span class="p">[</span><span class="mi">0</span><span class="p">].(</span><span class="kt">string</span><span class="p">)</span>
<span class="nx">str1</span> <span class="o">:=</span> <span class="nx">strs</span><span class="p">[</span><span class="mi">0</span><span class="p">].(</span><span class="kt">string</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">str1</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">str1</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -322,13 +293,11 @@ data.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">str</span> <span class="o">:=</span> <span class="s">`{&#34;page&#34;: 1, &#34;fruits&#34;: [&#34;apple&#34;, &#34;peach&#34;]}`</span>
<span class="nx">str</span> <span class="o">:=</span> <span class="s">`{&#34;page&#34;: 1, &#34;fruits&#34;: [&#34;apple&#34;, &#34;peach&#34;]}`</span> </span></span><span class="line"><span class="cl"> <span class="nx">res</span> <span class="o">:=</span> <span class="nx">response2</span><span class="p">{}</span>
<span class="nx">res</span> <span class="o">:=</span> <span class="nx">response2</span><span class="p">{}</span> </span></span><span class="line"><span class="cl"> <span class="nx">json</span><span class="p">.</span><span class="nf">Unmarshal</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="nx">str</span><span class="p">),</span> <span class="o">&amp;</span><span class="nx">res</span><span class="p">)</span>
<span class="nx">json</span><span class="p">.</span><span class="nf">Unmarshal</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="nx">str</span><span class="p">),</span> <span class="o">&amp;</span><span class="nx">res</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">.</span><span class="nx">Fruits</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">.</span><span class="nx">Fruits</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</pre>
</td> </td>
</tr> </tr>
@ -343,12 +312,10 @@ stream JSON encodings directly to <code>os.Writer</code>s like
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">enc</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">NewEncoder</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">)</span>
<span class="nx">enc</span> <span class="o">:=</span> <span class="nx">json</span><span class="p">.</span><span class="nf">NewEncoder</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">d</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s">&#34;lettuce&#34;</span><span class="p">:</span> <span class="mi">7</span><span class="p">}</span>
<span class="nx">d</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;apple&#34;</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s">&#34;lettuce&#34;</span><span class="p">:</span> <span class="mi">7</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">enc</span><span class="p">.</span><span class="nf">Encode</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span>
<span class="nx">enc</span><span class="p">.</span><span class="nf">Encode</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -362,21 +329,21 @@ stream JSON encodings directly to <code>os.Writer</code>s like
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run json.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run json.go
<span class="go">true </span></span><span class="line"><span class="cl"><span class="go">true
</span><span class="go">1 </span></span></span><span class="line"><span class="cl"><span class="go">1
</span><span class="go">2.34 </span></span></span><span class="line"><span class="cl"><span class="go">2.34
</span><span class="go">&#34;gopher&#34; </span></span></span><span class="line"><span class="cl"><span class="go">&#34;gopher&#34;
</span><span class="go">[&#34;apple&#34;,&#34;peach&#34;,&#34;pear&#34;] </span></span></span><span class="line"><span class="cl"><span class="go">[&#34;apple&#34;,&#34;peach&#34;,&#34;pear&#34;]
</span><span class="go">{&#34;apple&#34;:5,&#34;lettuce&#34;:7} </span></span></span><span class="line"><span class="cl"><span class="go">{&#34;apple&#34;:5,&#34;lettuce&#34;:7}
</span><span class="go">{&#34;Page&#34;:1,&#34;Fruits&#34;:[&#34;apple&#34;,&#34;peach&#34;,&#34;pear&#34;]} </span></span></span><span class="line"><span class="cl"><span class="go">{&#34;Page&#34;:1,&#34;Fruits&#34;:[&#34;apple&#34;,&#34;peach&#34;,&#34;pear&#34;]}
</span><span class="go">{&#34;page&#34;:1,&#34;fruits&#34;:[&#34;apple&#34;,&#34;peach&#34;,&#34;pear&#34;]} </span></span></span><span class="line"><span class="cl"><span class="go">{&#34;page&#34;:1,&#34;fruits&#34;:[&#34;apple&#34;,&#34;peach&#34;,&#34;pear&#34;]}
</span><span class="go">map[num:6.13 strs:[a b]] </span></span></span><span class="line"><span class="cl"><span class="go">map[num:6.13 strs:[a b]]
</span><span class="go">6.13 </span></span></span><span class="line"><span class="cl"><span class="go">6.13
</span><span class="go">a </span></span></span><span class="line"><span class="cl"><span class="go">a
</span><span class="go">{1 [apple peach]} </span></span></span><span class="line"><span class="cl"><span class="go">{1 [apple peach]}
</span><span class="go">apple </span></span></span><span class="line"><span class="cl"><span class="go">apple
</span><span class="go">{&#34;apple&#34;:5,&#34;lettuce&#34;:7}</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">{&#34;apple&#34;:5,&#34;lettuce&#34;:7}</span></span></span></code></pre>
</td> </td>
</tr> </tr>

60
public/line-filters generated
View File

@ -48,9 +48,7 @@ pattern to write your own Go line filters.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/kNcupWRsYPP"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/kNcupWRsYPP"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
<span class="kn">package</span> <span class="nx">main</span>
</pre>
</td> </td>
</tr> </tr>
@ -60,13 +58,12 @@ pattern to write your own Go line filters.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;bufio&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;bufio&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="s">&#34;strings&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;strings&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -76,8 +73,7 @@ pattern to write your own Go line filters.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -91,9 +87,7 @@ the next line in the default scanner.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">scanner</span> <span class="o">:=</span> <span class="nx">bufio</span><span class="p">.</span><span class="nf">NewScanner</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdin</span><span class="p">)</span></span></span></code></pre>
<span class="nx">scanner</span> <span class="o">:=</span> <span class="nx">bufio</span><span class="p">.</span><span class="nf">NewScanner</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdin</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -105,8 +99,7 @@ from the input.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="k">for</span> <span class="nx">scanner</span><span class="p">.</span><span class="nf">Scan</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">scanner</span><span class="p">.</span><span class="nf">Scan</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -116,8 +109,7 @@ from the input.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">ucl</span> <span class="o">:=</span> <span class="nx">strings</span><span class="p">.</span><span class="nf">ToUpper</span><span class="p">(</span><span class="nx">scanner</span><span class="p">.</span><span class="nf">Text</span><span class="p">())</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">ucl</span> <span class="o">:=</span> <span class="nx">strings</span><span class="p">.</span><span class="nf">ToUpper</span><span class="p">(</span><span class="nx">scanner</span><span class="p">.</span><span class="nf">Text</span><span class="p">())</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -128,10 +120,8 @@ from the input.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">ucl</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">ucl</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -143,13 +133,11 @@ expected and not reported by <code>Scan</code> as an error.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">scanner</span><span class="p">.</span><span class="nf">Err</span><span class="p">();</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">scanner</span><span class="p">.</span><span class="nf">Err</span><span class="p">();</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintln</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stderr</span><span class="p">,</span> <span class="s">&#34;error:&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintln</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stderr</span><span class="p">,</span> <span class="s">&#34;error:&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="nx">os</span><span class="p">.</span><span class="nf">Exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -165,9 +153,8 @@ lowercase lines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> echo &#39;hello&#39; &gt; /tmp/lines
<span class="gp">$</span> echo &#39;hello&#39; &gt; /tmp/lines </span></span><span class="line"><span class="cl"><span class="gp">$</span> echo &#39;filter&#39; &gt;&gt; /tmp/lines</span></span></code></pre>
<span class="gp">$</span> echo &#39;filter&#39; &gt;&gt; /tmp/lines</pre>
</td> </td>
</tr> </tr>
@ -178,10 +165,9 @@ lowercase lines.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> cat /tmp/lines | go run line-filters.go
<span class="gp">$</span> cat /tmp/lines | go run line-filters.go </span></span><span class="line"><span class="cl"><span class="go">HELLO
<span class="go">HELLO </span></span></span><span class="line"><span class="cl"><span class="go">FILTER</span></span></span></code></pre>
</span><span class="go">FILTER</span></pre>
</td> </td>
</tr> </tr>

84
public/maps generated
View File

@ -43,8 +43,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/6gcPOX9Mm1R"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/6gcPOX9Mm1R"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,8 +53,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -65,8 +63,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -78,9 +75,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">m</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">)</span></span></span></code></pre>
<span class="nx">m</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -92,10 +87,8 @@ syntax.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">m</span><span class="p">[</span><span class="s">&#34;k1&#34;</span><span class="p">]</span> <span class="p">=</span> <span class="mi">7</span>
<span class="nx">m</span><span class="p">[</span><span class="s">&#34;k1&#34;</span><span class="p">]</span> <span class="p">=</span> <span class="mi">7</span> </span></span><span class="line"><span class="cl"> <span class="nx">m</span><span class="p">[</span><span class="s">&#34;k2&#34;</span><span class="p">]</span> <span class="p">=</span> <span class="mi">13</span></span></span></code></pre>
<span class="nx">m</span><span class="p">[</span><span class="s">&#34;k2&#34;</span><span class="p">]</span> <span class="p">=</span> <span class="mi">13</span>
</pre>
</td> </td>
</tr> </tr>
@ -107,9 +100,7 @@ its key/value pairs.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -120,10 +111,8 @@ its key/value pairs.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">v1</span> <span class="o">:=</span> <span class="nx">m</span><span class="p">[</span><span class="s">&#34;k1&#34;</span><span class="p">]</span>
<span class="nx">v1</span> <span class="o">:=</span> <span class="nx">m</span><span class="p">[</span><span class="s">&#34;k1&#34;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;v1:&#34;</span><span class="p">,</span> <span class="nx">v1</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;v1:&#34;</span><span class="p">,</span> <span class="nx">v1</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -136,10 +125,8 @@ value type is returned.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">v3</span> <span class="o">:=</span> <span class="nx">m</span><span class="p">[</span><span class="s">&#34;k3&#34;</span><span class="p">]</span>
<span class="nx">v3</span> <span class="o">:=</span> <span class="nx">m</span><span class="p">[</span><span class="s">&#34;k3&#34;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;v3:&#34;</span><span class="p">,</span> <span class="nx">v3</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;v3:&#34;</span><span class="p">,</span> <span class="nx">v3</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -151,9 +138,7 @@ pairs when called on a map.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">m</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">m</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -165,10 +150,8 @@ a map.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nb">delete</span><span class="p">(</span><span class="nx">m</span><span class="p">,</span> <span class="s">&#34;k2&#34;</span><span class="p">)</span>
<span class="nb">delete</span><span class="p">(</span><span class="nx">m</span><span class="p">,</span> <span class="s">&#34;k2&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -180,10 +163,8 @@ the <code>clear</code> builtin.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">clear</span><span class="p">(</span><span class="nx">m</span><span class="p">)</span>
<span class="nf">clear</span><span class="p">(</span><span class="nx">m</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -200,10 +181,8 @@ itself, so we ignored it with the <em>blank identifier</em>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">prs</span> <span class="o">:=</span> <span class="nx">m</span><span class="p">[</span><span class="s">&#34;k2&#34;</span><span class="p">]</span>
<span class="nx">_</span><span class="p">,</span> <span class="nx">prs</span> <span class="o">:=</span> <span class="nx">m</span><span class="p">[</span><span class="s">&#34;k2&#34;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;prs:&#34;</span><span class="p">,</span> <span class="nx">prs</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;prs:&#34;</span><span class="p">,</span> <span class="nx">prs</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -215,11 +194,9 @@ the same line with this syntax.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">n</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;foo&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&#34;bar&#34;</span><span class="p">:</span> <span class="mi">2</span><span class="p">}</span>
<span class="nx">n</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;foo&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&#34;bar&#34;</span><span class="p">:</span> <span class="mi">2</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">n</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">n</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -235,16 +212,15 @@ printed with <code>fmt.Println</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run maps.go
<span class="gp">$</span> go run maps.go </span></span><span class="line"><span class="cl"><span class="go">map: map[k1:7 k2:13]
<span class="go">map: map[k1:7 k2:13] </span></span></span><span class="line"><span class="cl"><span class="go">v1: 7
</span><span class="go">v1: 7 </span></span></span><span class="line"><span class="cl"><span class="go">v3: 0
</span><span class="go">v3: 0 </span></span></span><span class="line"><span class="cl"><span class="go">len: 2
</span><span class="go">len: 2 </span></span></span><span class="line"><span class="cl"><span class="go">map: map[k1:7]
</span><span class="go">map: map[k1:7] </span></span></span><span class="line"><span class="cl"><span class="go">map: map[]
</span><span class="go">map: map[] </span></span></span><span class="line"><span class="cl"><span class="go">prs: false
</span><span class="go">prs: false </span></span></span><span class="line"><span class="cl"><span class="go">map: map[bar:2 foo:1]</span></span></span></code></pre>
</span><span class="go">map: map[bar:2 foo:1]</span></pre>
</td> </td>
</tr> </tr>

60
public/methods generated
View File

@ -42,8 +42,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/4wmDCAydC1e"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/4wmDCAydC1e"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -53,8 +52,7 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -64,10 +62,9 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">type</span> <span class="nx">rect</span> <span class="kd">struct</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">rect</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="nx">width</span><span class="p">,</span> <span class="nx">height</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">width</span><span class="p">,</span> <span class="nx">height</span> <span class="kt">int</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -78,11 +75,9 @@
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">r</span> <span class="o">*</span><span class="nx">rect</span><span class="p">)</span> <span class="nf">area</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">r</span> <span class="o">*</span><span class="nx">rect</span><span class="p">)</span> <span class="nf">area</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">r</span><span class="p">.</span><span class="nx">width</span> <span class="o">*</span> <span class="nx">r</span><span class="p">.</span><span class="nx">height</span>
<span class="k">return</span> <span class="nx">r</span><span class="p">.</span><span class="nx">width</span> <span class="o">*</span> <span class="nx">r</span><span class="p">.</span><span class="nx">height</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -94,11 +89,9 @@ receiver types. Here&rsquo;s an example of a value receiver.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">r</span> <span class="nx">rect</span><span class="p">)</span> <span class="nf">perim</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">r</span> <span class="nx">rect</span><span class="p">)</span> <span class="nf">perim</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">2</span><span class="o">*</span><span class="nx">r</span><span class="p">.</span><span class="nx">width</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">r</span><span class="p">.</span><span class="nx">height</span>
<span class="k">return</span> <span class="mi">2</span><span class="o">*</span><span class="nx">r</span><span class="p">.</span><span class="nx">width</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">r</span><span class="p">.</span><span class="nx">height</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -108,9 +101,8 @@ receiver types. Here&rsquo;s an example of a value receiver.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">r</span> <span class="o">:=</span> <span class="nx">rect</span><span class="p">{</span><span class="nx">width</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span> <span class="nx">height</span><span class="p">:</span> <span class="mi">5</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">r</span> <span class="o">:=</span> <span class="nx">rect</span><span class="p">{</span><span class="nx">width</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span> <span class="nx">height</span><span class="p">:</span> <span class="mi">5</span><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -121,10 +113,8 @@ receiver types. Here&rsquo;s an example of a value receiver.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;area: &#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nf">area</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;area: &#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nf">area</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;perim:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nf">perim</span><span class="p">())</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;perim:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nf">perim</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -139,12 +129,10 @@ receiving struct.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">rp</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">r</span>
<span class="nx">rp</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">r</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;area: &#34;</span><span class="p">,</span> <span class="nx">rp</span><span class="p">.</span><span class="nf">area</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;area: &#34;</span><span class="p">,</span> <span class="nx">rp</span><span class="p">.</span><span class="nf">area</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;perim:&#34;</span><span class="p">,</span> <span class="nx">rp</span><span class="p">.</span><span class="nf">perim</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;perim:&#34;</span><span class="p">,</span> <span class="nx">rp</span><span class="p">.</span><span class="nf">perim</span><span class="p">())</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -158,11 +146,11 @@ receiving struct.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run methods.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run methods.go
<span class="go">area: 50 </span></span><span class="line"><span class="cl"><span class="go">area: 50
</span><span class="go">perim: 30 </span></span></span><span class="line"><span class="cl"><span class="go">perim: 30
</span><span class="go">area: 50 </span></span></span><span class="line"><span class="cl"><span class="go">area: 50
</span><span class="go">perim: 30</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">perim: 30</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -44,8 +44,7 @@ to return both result and error values from a function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/vZdUvLB1WbK"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/vZdUvLB1WbK"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,8 +54,7 @@ to return both result and error values from a function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -68,11 +66,9 @@ the function returns 2 <code>int</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">vals</span><span class="p">()</span> <span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">vals</span><span class="p">()</span> <span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">7</span>
<span class="k">return</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">7</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -82,8 +78,7 @@ the function returns 2 <code>int</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -95,11 +90,9 @@ call with <em>multiple assignment</em>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">a</span><span class="p">,</span> <span class="nx">b</span> <span class="o">:=</span> <span class="nf">vals</span><span class="p">()</span>
<span class="nx">a</span><span class="p">,</span> <span class="nx">b</span> <span class="o">:=</span> <span class="nf">vals</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">b</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">b</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -111,11 +104,9 @@ use the blank identifier <code>_</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">c</span> <span class="o">:=</span> <span class="nf">vals</span><span class="p">()</span>
<span class="nx">_</span><span class="p">,</span> <span class="nx">c</span> <span class="o">:=</span> <span class="nf">vals</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">c</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">c</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -129,10 +120,10 @@ use the blank identifier <code>_</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run multiple-return-values.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run multiple-return-values.go
<span class="go">3 </span></span><span class="line"><span class="cl"><span class="go">3
</span><span class="go">7 </span></span></span><span class="line"><span class="cl"><span class="go">7
</span><span class="go">7</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">7</span></span></span></code></pre>
</td> </td>
</tr> </tr>

84
public/mutexes generated
View File

@ -45,8 +45,7 @@ to safely access data across multiple goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/JU735qy2UmB"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/JU735qy2UmB"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,11 +55,10 @@ to safely access data across multiple goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;sync&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;sync&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -76,12 +74,10 @@ pointer.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">Container</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">Container</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">mu</span> <span class="nx">sync</span><span class="p">.</span><span class="nx">Mutex</span>
<span class="nx">mu</span> <span class="nx">sync</span><span class="p">.</span><span class="nx">Mutex</span> </span></span><span class="line"><span class="cl"> <span class="nx">counters</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span>
<span class="nx">counters</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -94,8 +90,7 @@ statement.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="p">(</span><span class="nx">c</span> <span class="o">*</span><span class="nx">Container</span><span class="p">)</span> <span class="nf">inc</span><span class="p">(</span><span class="nx">name</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">c</span> <span class="o">*</span><span class="nx">Container</span><span class="p">)</span> <span class="nf">inc</span><span class="p">(</span><span class="nx">name</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -105,11 +100,10 @@ statement.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">c</span><span class="p">.</span><span class="nx">mu</span><span class="p">.</span><span class="nf">Lock</span><span class="p">()</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">c</span><span class="p">.</span><span class="nx">mu</span><span class="p">.</span><span class="nf">Lock</span><span class="p">()</span>
<span class="k">defer</span> <span class="nx">c</span><span class="p">.</span><span class="nx">mu</span><span class="p">.</span><span class="nf">Unlock</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nx">c</span><span class="p">.</span><span class="nx">mu</span><span class="p">.</span><span class="nf">Unlock</span><span class="p">()</span>
<span class="nx">c</span><span class="p">.</span><span class="nx">counters</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span><span class="o">++</span> </span></span><span class="line"><span class="cl"> <span class="nx">c</span><span class="p">.</span><span class="nx">counters</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span><span class="o">++</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -121,9 +115,8 @@ initialization is required here.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">c</span> <span class="o">:=</span> <span class="nx">Container</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">c</span> <span class="o">:=</span> <span class="nx">Container</span><span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -133,9 +126,8 @@ initialization is required here.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">counters</span><span class="p">:</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;a&#34;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">:</span> <span class="mi">0</span><span class="p">},</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">counters</span><span class="p">:</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;a&#34;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">:</span> <span class="mi">0</span><span class="p">},</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -145,8 +137,7 @@ initialization is required here.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="kd">var</span> <span class="nx">wg</span> <span class="nx">sync</span><span class="p">.</span><span class="nx">WaitGroup</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">wg</span> <span class="nx">sync</span><span class="p">.</span><span class="nx">WaitGroup</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -158,14 +149,12 @@ in a loop.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">doIncrement</span> <span class="o">:=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">name</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">n</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">doIncrement</span> <span class="o">:=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">name</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">n</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="nx">n</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="nx">n</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">c</span><span class="p">.</span><span class="nf">inc</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span>
<span class="nx">c</span><span class="p">.</span><span class="nf">inc</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">wg</span><span class="p">.</span><span class="nf">Done</span><span class="p">()</span>
<span class="nx">wg</span><span class="p">.</span><span class="nf">Done</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -178,12 +167,10 @@ and two of them access the same counter.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">wg</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="nx">wg</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="nf">doIncrement</span><span class="p">(</span><span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span>
<span class="k">go</span> <span class="nf">doIncrement</span><span class="p">(</span><span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="nf">doIncrement</span><span class="p">(</span><span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span>
<span class="k">go</span> <span class="nf">doIncrement</span><span class="p">(</span><span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="nf">doIncrement</span><span class="p">(</span><span class="s">&#34;b&#34;</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span></span></span></code></pre>
<span class="k">go</span> <span class="nf">doIncrement</span><span class="p">(</span><span class="s">&#34;b&#34;</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -194,11 +181,9 @@ and two of them access the same counter.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">wg</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span>
<span class="nx">wg</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">c</span><span class="p">.</span><span class="nx">counters</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">c</span><span class="p">.</span><span class="nx">counters</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -214,9 +199,8 @@ updated as expected.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run mutexes.go
<span class="gp">$</span> go run mutexes.go </span></span><span class="line"><span class="cl"><span class="go">map[a:20000 b:10000]</span></span></span></code></pre>
<span class="go">map[a:20000 b:10000]</span></pre>
</td> </td>
</tr> </tr>

View File

@ -45,8 +45,7 @@ non-blocking multi-way <code>select</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/TFv6-7OVNVq"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/TFv6-7OVNVq"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,8 +55,7 @@ non-blocking multi-way <code>select</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -67,10 +65,9 @@ non-blocking multi-way <code>select</code>s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">messages</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">messages</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">)</span>
<span class="nx">signals</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">signals</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,14 +81,12 @@ it will immediately take the <code>default</code> case.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
<span class="k">select</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">msg</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">messages</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">msg</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">messages</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received message&#34;</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received message&#34;</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">default</span><span class="p">:</span>
<span class="k">default</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;no message received&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;no message received&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -105,15 +100,13 @@ Therefore the <code>default</code> case is selected.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">msg</span> <span class="o">:=</span> <span class="s">&#34;hi&#34;</span>
<span class="nx">msg</span> <span class="o">:=</span> <span class="s">&#34;hi&#34;</span> </span></span><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
<span class="k">select</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">messages</span> <span class="o">&lt;-</span> <span class="nx">msg</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">messages</span> <span class="o">&lt;-</span> <span class="nx">msg</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sent message&#34;</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sent message&#34;</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">default</span><span class="p">:</span>
<span class="k">default</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;no message sent&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;no message sent&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -127,17 +120,15 @@ on both <code>messages</code> and <code>signals</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
<span class="k">select</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">msg</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">messages</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">msg</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">messages</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received message&#34;</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received message&#34;</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">sig</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">signals</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">sig</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">signals</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received signal&#34;</span><span class="p">,</span> <span class="nx">sig</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received signal&#34;</span><span class="p">,</span> <span class="nx">sig</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">default</span><span class="p">:</span>
<span class="k">default</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;no activity&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;no activity&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -151,10 +142,10 @@ on both <code>messages</code> and <code>signals</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run non-blocking-channel-operations.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run non-blocking-channel-operations.go
<span class="go">no message received </span></span><span class="line"><span class="cl"><span class="go">no message received
</span><span class="go">no message sent </span></span></span><span class="line"><span class="cl"><span class="go">no message sent
</span><span class="go">no activity</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">no activity</span></span></span></code></pre>
</td> </td>
</tr> </tr>

68
public/number-parsing generated
View File

@ -43,8 +43,7 @@ in many programs; here&rsquo;s how to do it in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/ZAMEid6Fpmu"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/ZAMEid6Fpmu"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,12 +55,10 @@ parsing.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="kn">import</span> <span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;strconv&#34;</span>
<span class="s">&#34;strconv&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
<span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -71,8 +68,7 @@ parsing.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,10 +80,8 @@ precision to parse.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">f</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">ParseFloat</span><span class="p">(</span><span class="s">&#34;1.234&#34;</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span>
<span class="nx">f</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">ParseFloat</span><span class="p">(</span><span class="s">&#34;1.234&#34;</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -100,10 +94,8 @@ bits.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">i</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">ParseInt</span><span class="p">(</span><span class="s">&#34;123&#34;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span>
<span class="nx">i</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">ParseInt</span><span class="p">(</span><span class="s">&#34;123&#34;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -114,10 +106,8 @@ bits.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">d</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">ParseInt</span><span class="p">(</span><span class="s">&#34;0x1c8&#34;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span>
<span class="nx">d</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">ParseInt</span><span class="p">(</span><span class="s">&#34;0x1c8&#34;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -128,10 +118,8 @@ bits.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">u</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">ParseUint</span><span class="p">(</span><span class="s">&#34;789&#34;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span>
<span class="nx">u</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">ParseUint</span><span class="p">(</span><span class="s">&#34;789&#34;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -143,10 +131,8 @@ bits.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">k</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">Atoi</span><span class="p">(</span><span class="s">&#34;135&#34;</span><span class="p">)</span>
<span class="nx">k</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">Atoi</span><span class="p">(</span><span class="s">&#34;135&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">k</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">k</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -157,11 +143,9 @@ bits.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">Atoi</span><span class="p">(</span><span class="s">&#34;wat&#34;</span><span class="p">)</span>
<span class="nx">_</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">strconv</span><span class="p">.</span><span class="nf">Atoi</span><span class="p">(</span><span class="s">&#34;wat&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -175,13 +159,13 @@ bits.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run number-parsing.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run number-parsing.go
<span class="go">1.234 </span></span><span class="line"><span class="cl"><span class="go">1.234
</span><span class="go">123 </span></span></span><span class="line"><span class="cl"><span class="go">123
</span><span class="go">456 </span></span></span><span class="line"><span class="cl"><span class="go">456
</span><span class="go">789 </span></span></span><span class="line"><span class="cl"><span class="go">789
</span><span class="go">135 </span></span></span><span class="line"><span class="cl"><span class="go">135
</span><span class="go">strconv.ParseInt: parsing &#34;wat&#34;: invalid syntax</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">strconv.ParseInt: parsing &#34;wat&#34;: invalid syntax</span></span></span></code></pre>
</td> </td>
</tr> </tr>

40
public/panic generated
View File

@ -45,8 +45,7 @@ aren&rsquo;t prepared to handle gracefully.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/9-2vCvRuhmE"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/9-2vCvRuhmE"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,8 +55,7 @@ aren&rsquo;t prepared to handle gracefully.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;os&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;os&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -67,8 +65,7 @@ aren&rsquo;t prepared to handle gracefully.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -81,9 +78,7 @@ site designed to panic.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="s">&#34;a problem&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nb">panic</span><span class="p">(</span><span class="s">&#34;a problem&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -97,13 +92,11 @@ returns an error value that we don&rsquo;t know how to
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Create</span><span class="p">(</span><span class="s">&#34;/tmp/file&#34;</span><span class="p">)</span>
<span class="nx">_</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Create</span><span class="p">(</span><span class="s">&#34;/tmp/file&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -134,9 +127,8 @@ the first panic out.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run panic.go
<span class="gp">$</span> go run panic.go </span></span><span class="line"><span class="cl"><span class="go">panic: a problem</span></span></span></code></pre>
<span class="go">panic: a problem</span></pre>
</td> </td>
</tr> </tr>
@ -146,11 +138,11 @@ the first panic out.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="go">goroutine 1 [running]: <pre class="chroma"><code><span class="line"><span class="cl"><span class="go">goroutine 1 [running]:
</span><span class="go">main.main() </span></span></span><span class="line"><span class="cl"><span class="go">main.main()
</span><span class="go"> /.../panic.go:12 +0x47 </span></span></span><span class="line"><span class="cl"><span class="go"> /.../panic.go:12 +0x47
</span><span class="go">... </span></span></span><span class="line"><span class="cl"><span class="go">...
</span><span class="go">exit status 2</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">exit status 2</span></span></span></code></pre>
</td> </td>
</tr> </tr>

57
public/pointers generated
View File

@ -44,8 +44,7 @@ within your program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/OlWCLpxAyBz"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/OlWCLpxAyBz"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,8 +54,7 @@ within your program.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -71,11 +69,9 @@ from the one in the calling function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">zeroval</span><span class="p">(</span><span class="nx">ival</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">zeroval</span><span class="p">(</span><span class="nx">ival</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">ival</span> <span class="p">=</span> <span class="mi">0</span>
<span class="nx">ival</span> <span class="p">=</span> <span class="mi">0</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -91,11 +87,9 @@ value at the referenced address.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">zeroptr</span><span class="p">(</span><span class="nx">iptr</span> <span class="o">*</span><span class="kt">int</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">zeroptr</span><span class="p">(</span><span class="nx">iptr</span> <span class="o">*</span><span class="kt">int</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="o">*</span><span class="nx">iptr</span> <span class="p">=</span> <span class="mi">0</span>
<span class="o">*</span><span class="nx">iptr</span> <span class="p">=</span> <span class="mi">0</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -105,10 +99,9 @@ value at the referenced address.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span> </span></span><span class="line"><span class="cl"> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;initial:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;initial:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -118,9 +111,8 @@ value at the referenced address.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nf">zeroval</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">zeroval</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;zeroval:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;zeroval:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -132,10 +124,8 @@ i.e. a pointer to <code>i</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">zeroptr</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">i</span><span class="p">)</span>
<span class="nf">zeroptr</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">i</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;zeroptr:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;zeroptr:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -146,10 +136,8 @@ i.e. a pointer to <code>i</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;pointer:&#34;</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">i</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;pointer:&#34;</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">i</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -166,12 +154,11 @@ the memory address for that variable.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run pointers.go
<span class="gp">$</span> go run pointers.go </span></span><span class="line"><span class="cl"><span class="go">initial: 1
<span class="go">initial: 1 </span></span></span><span class="line"><span class="cl"><span class="go">zeroval: 1
</span><span class="go">zeroval: 1 </span></span></span><span class="line"><span class="cl"><span class="go">zeroptr: 0
</span><span class="go">zeroptr: 0 </span></span></span><span class="line"><span class="cl"><span class="go">pointer: 0x42131100</span></span></span></code></pre>
</span><span class="go">pointer: 0x42131100</span></pre>
</td> </td>
</tr> </tr>

88
public/random-numbers generated
View File

@ -44,8 +44,7 @@ generation.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/Enb5uJEx0Bt"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/Enb5uJEx0Bt"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,12 +54,11 @@ generation.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;math/rand&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;math/rand&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -70,8 +68,7 @@ generation.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -83,11 +80,9 @@ generation.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="s">&#34;,&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="s">&#34;,&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -99,9 +94,7 @@ generation.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Float64</span><span class="p">())</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Float64</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -113,11 +106,9 @@ other ranges, for example <code>5.0 &lt;= f' &lt; 10.0</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">((</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Float64</span><span class="p">()</span><span class="o">*</span><span class="mi">5</span><span class="p">)</span><span class="o">+</span><span class="mi">5</span><span class="p">,</span> <span class="s">&#34;,&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">((</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Float64</span><span class="p">()</span><span class="o">*</span><span class="mi">5</span><span class="p">)</span><span class="o">+</span><span class="mi">5</span><span class="p">,</span> <span class="s">&#34;,&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">((</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Float64</span><span class="p">()</span> <span class="o">*</span> <span class="mi">5</span><span class="p">)</span> <span class="o">+</span> <span class="mi">5</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">((</span><span class="nx">rand</span><span class="p">.</span><span class="nf">Float64</span><span class="p">()</span> <span class="o">*</span> <span class="mi">5</span><span class="p">)</span> <span class="o">+</span> <span class="mi">5</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -132,10 +123,8 @@ intend to be secret; use <code>crypto/rand</code> for those.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s1</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">NewSource</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">().</span><span class="nf">UnixNano</span><span class="p">())</span>
<span class="nx">s1</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">NewSource</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">().</span><span class="nf">UnixNano</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">r1</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="nx">s1</span><span class="p">)</span></span></span></code></pre>
<span class="nx">r1</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="nx">s1</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -147,11 +136,9 @@ functions on the <code>rand</code> package.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r1</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="s">&#34;,&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r1</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="s">&#34;,&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r1</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r1</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -163,18 +150,16 @@ produces the same sequence of random numbers.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s2</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">NewSource</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
<span class="nx">s2</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">NewSource</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">r2</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="nx">s2</span><span class="p">)</span>
<span class="nx">r2</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="nx">s2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r2</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="s">&#34;,&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r2</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="s">&#34;,&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r2</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r2</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">s3</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">NewSource</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
<span class="nx">s3</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">NewSource</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">r3</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="nx">s3</span><span class="p">)</span>
<span class="nx">r3</span> <span class="o">:=</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="nx">s3</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r3</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="s">&#34;,&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r3</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="s">&#34;,&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r3</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">r3</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -193,14 +178,13 @@ playground is implemented.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run random-numbers.go
<span class="gp">$</span> go run random-numbers.go </span></span><span class="line"><span class="cl"><span class="go">81,87
<span class="go">81,87 </span></span></span><span class="line"><span class="cl"><span class="go">0.6645600532184904
</span><span class="go">0.6645600532184904 </span></span></span><span class="line"><span class="cl"><span class="go">7.123187485356329,8.434115364335547
</span><span class="go">7.123187485356329,8.434115364335547 </span></span></span><span class="line"><span class="cl"><span class="go">0,28
</span><span class="go">0,28 </span></span></span><span class="line"><span class="cl"><span class="go">5,87
</span><span class="go">5,87 </span></span></span><span class="line"><span class="cl"><span class="go">5,87</span></span></span></code></pre>
</span><span class="go">5,87</span></pre>
</td> </td>
</tr> </tr>

81
public/range generated
View File

@ -44,8 +44,7 @@ of the data structures we&rsquo;ve already learned.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/kRsyWNmLFLz"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/kRsyWNmLFLz"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,8 +54,7 @@ of the data structures we&rsquo;ve already learned.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -66,8 +64,7 @@ of the data structures we&rsquo;ve already learned.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -79,14 +76,12 @@ Arrays work like this too.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">nums</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">}</span>
<span class="nx">nums</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">sum</span> <span class="o">:=</span> <span class="mi">0</span>
<span class="nx">sum</span> <span class="o">:=</span> <span class="mi">0</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">num</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">nums</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">num</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">nums</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">sum</span> <span class="o">+=</span> <span class="nx">num</span>
<span class="nx">sum</span> <span class="o">+=</span> <span class="nx">num</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sum:&#34;</span><span class="p">,</span> <span class="nx">sum</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sum:&#34;</span><span class="p">,</span> <span class="nx">sum</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -101,13 +96,11 @@ the indexes though.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">num</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">nums</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">num</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">nums</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">num</span> <span class="o">==</span> <span class="mi">3</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">num</span> <span class="o">==</span> <span class="mi">3</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;index:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;index:&#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -118,12 +111,10 @@ the indexes though.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">kvs</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;a&#34;</span><span class="p">:</span> <span class="s">&#34;apple&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">:</span> <span class="s">&#34;banana&#34;</span><span class="p">}</span>
<span class="nx">kvs</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;a&#34;</span><span class="p">:</span> <span class="s">&#34;apple&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">:</span> <span class="s">&#34;banana&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">k</span><span class="p">,</span> <span class="nx">v</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">kvs</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">k</span><span class="p">,</span> <span class="nx">v</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">kvs</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%s -&gt; %s\n&#34;</span><span class="p">,</span> <span class="nx">k</span><span class="p">,</span> <span class="nx">v</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%s -&gt; %s\n&#34;</span><span class="p">,</span> <span class="nx">k</span><span class="p">,</span> <span class="nx">v</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -134,11 +125,9 @@ the indexes though.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">k</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">kvs</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">k</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">kvs</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;key:&#34;</span><span class="p">,</span> <span class="nx">k</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;key:&#34;</span><span class="p">,</span> <span class="nx">k</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -153,12 +142,10 @@ details.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">c</span> <span class="o">:=</span> <span class="k">range</span> <span class="s">&#34;go&#34;</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">c</span> <span class="o">:=</span> <span class="k">range</span> <span class="s">&#34;go&#34;</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -172,15 +159,15 @@ details.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run range.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run range.go
<span class="go">sum: 9 </span></span><span class="line"><span class="cl"><span class="go">sum: 9
</span><span class="go">index: 1 </span></span></span><span class="line"><span class="cl"><span class="go">index: 1
</span><span class="go">a -&gt; apple </span></span></span><span class="line"><span class="cl"><span class="go">a -&gt; apple
</span><span class="go">b -&gt; banana </span></span></span><span class="line"><span class="cl"><span class="go">b -&gt; banana
</span><span class="go">key: a </span></span></span><span class="line"><span class="cl"><span class="go">key: a
</span><span class="go">key: b </span></span></span><span class="line"><span class="cl"><span class="go">key: b
</span><span class="go">0 103 </span></span></span><span class="line"><span class="cl"><span class="go">0 103
</span><span class="go">1 111</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">1 111</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -45,8 +45,7 @@ values received from a channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/yQMclmwOYs9"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/yQMclmwOYs9"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,8 +55,7 @@ values received from a channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -67,8 +65,7 @@ values received from a channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -79,12 +76,10 @@ values received from a channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">queue</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="nx">queue</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">queue</span> <span class="o">&lt;-</span> <span class="s">&#34;one&#34;</span>
<span class="nx">queue</span> <span class="o">&lt;-</span> <span class="s">&#34;one&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">queue</span> <span class="o">&lt;-</span> <span class="s">&#34;two&#34;</span>
<span class="nx">queue</span> <span class="o">&lt;-</span> <span class="s">&#34;two&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nb">close</span><span class="p">(</span><span class="nx">queue</span><span class="p">)</span></span></span></code></pre>
<span class="nb">close</span><span class="p">(</span><span class="nx">queue</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -98,12 +93,10 @@ receiving the 2 elements.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">elem</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">queue</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">elem</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">queue</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">elem</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">elem</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -117,9 +110,9 @@ receiving the 2 elements.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run range-over-channels.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run range-over-channels.go
<span class="go">one </span></span><span class="line"><span class="cl"><span class="go">one
</span><span class="go">two</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">two</span></span></span></code></pre>
</td> </td>
</tr> </tr>

111
public/rate-limiting generated
View File

@ -46,8 +46,7 @@ channels, and <a href="tickers">tickers</a>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/lqf7pC2FUeT"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/lqf7pC2FUeT"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -57,11 +56,10 @@ channels, and <a href="tickers">tickers</a>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -71,8 +69,7 @@ channels, and <a href="tickers">tickers</a>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -86,13 +83,11 @@ same name.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">requests</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="nx">requests</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">requests</span> <span class="o">&lt;-</span> <span class="nx">i</span>
<span class="nx">requests</span> <span class="o">&lt;-</span> <span class="nx">i</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nb">close</span><span class="p">(</span><span class="nx">requests</span><span class="p">)</span></span></span></code></pre>
<span class="nb">close</span><span class="p">(</span><span class="nx">requests</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -105,9 +100,7 @@ our rate limiting scheme.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">limiter</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Tick</span><span class="p">(</span><span class="mi">200</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span></span></span></code></pre>
<span class="nx">limiter</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Tick</span><span class="p">(</span><span class="mi">200</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -120,12 +113,10 @@ before serving each request, we limit ourselves to
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">req</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">requests</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">req</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">requests</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">limiter</span>
<span class="o">&lt;-</span><span class="nx">limiter</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;request&#34;</span><span class="p">,</span> <span class="nx">req</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;request&#34;</span><span class="p">,</span> <span class="nx">req</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -140,9 +131,7 @@ channel will allow bursts of up to 3 events.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">burstyLimiter</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Time</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span></span></span></code></pre>
<span class="nx">burstyLimiter</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Time</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -153,11 +142,9 @@ channel will allow bursts of up to 3 events.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">burstyLimiter</span> <span class="o">&lt;-</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span>
<span class="nx">burstyLimiter</span> <span class="o">&lt;-</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -169,13 +156,11 @@ value to <code>burstyLimiter</code>, up to its limit of 3.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">t</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Tick</span><span class="p">(</span><span class="mi">200</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">t</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Tick</span><span class="p">(</span><span class="mi">200</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">burstyLimiter</span> <span class="o">&lt;-</span> <span class="nx">t</span>
<span class="nx">burstyLimiter</span> <span class="o">&lt;-</span> <span class="nx">t</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
<span class="p">}()</span>
</pre>
</td> </td>
</tr> </tr>
@ -188,18 +173,16 @@ of <code>burstyLimiter</code>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">burstyRequests</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="nx">burstyRequests</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">burstyRequests</span> <span class="o">&lt;-</span> <span class="nx">i</span>
<span class="nx">burstyRequests</span> <span class="o">&lt;-</span> <span class="nx">i</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nb">close</span><span class="p">(</span><span class="nx">burstyRequests</span><span class="p">)</span>
<span class="nb">close</span><span class="p">(</span><span class="nx">burstyRequests</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">req</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">burstyRequests</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">req</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">burstyRequests</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">burstyLimiter</span>
<span class="o">&lt;-</span><span class="nx">burstyLimiter</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;request&#34;</span><span class="p">,</span> <span class="nx">req</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;request&#34;</span><span class="p">,</span> <span class="nx">req</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -215,13 +198,12 @@ handled once every ~200 milliseconds as desired.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run rate-limiting.go
<span class="gp">$</span> go run rate-limiting.go </span></span><span class="line"><span class="cl"><span class="go">request 1 2012-10-19 00:38:18.687438 +0000 UTC
<span class="go">request 1 2012-10-19 00:38:18.687438 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">request 2 2012-10-19 00:38:18.887471 +0000 UTC
</span><span class="go">request 2 2012-10-19 00:38:18.887471 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">request 3 2012-10-19 00:38:19.087238 +0000 UTC
</span><span class="go">request 3 2012-10-19 00:38:19.087238 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">request 4 2012-10-19 00:38:19.287338 +0000 UTC
</span><span class="go">request 4 2012-10-19 00:38:19.287338 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">request 5 2012-10-19 00:38:19.487331 +0000 UTC</span></span></span></code></pre>
</span><span class="go">request 5 2012-10-19 00:38:19.487331 +0000 UTC</span></pre>
</td> </td>
</tr> </tr>
@ -234,12 +216,11 @@ then serve the remaining 2 with ~200ms delays each.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="go">request 1 2012-10-19 00:38:20.487578 +0000 UTC
<span class="go">request 1 2012-10-19 00:38:20.487578 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">request 2 2012-10-19 00:38:20.487645 +0000 UTC
</span><span class="go">request 2 2012-10-19 00:38:20.487645 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">request 3 2012-10-19 00:38:20.487676 +0000 UTC
</span><span class="go">request 3 2012-10-19 00:38:20.487676 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">request 4 2012-10-19 00:38:20.687483 +0000 UTC
</span><span class="go">request 4 2012-10-19 00:38:20.687483 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">request 5 2012-10-19 00:38:20.887542 +0000 UTC</span></span></span></code></pre>
</span><span class="go">request 5 2012-10-19 00:38:20.887542 +0000 UTC</span></pre>
</td> </td>
</tr> </tr>

125
public/reading-files generated
View File

@ -44,8 +44,7 @@ reading files.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/DF2Wo8nDKaF"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/DF2Wo8nDKaF"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,13 +54,12 @@ reading files.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;bufio&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;bufio&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;io&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;io&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -73,13 +71,11 @@ This helper will streamline our error checks below.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">check</span><span class="p">(</span><span class="nx">e</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">check</span><span class="p">(</span><span class="nx">e</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -89,8 +85,7 @@ This helper will streamline our error checks below.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -102,11 +97,9 @@ slurping a file&rsquo;s entire contents into memory.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">dat</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">ReadFile</span><span class="p">(</span><span class="s">&#34;/tmp/dat&#34;</span><span class="p">)</span>
<span class="nx">dat</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">ReadFile</span><span class="p">(</span><span class="s">&#34;/tmp/dat&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">dat</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">dat</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -119,10 +112,8 @@ by <code>Open</code>ing a file to obtain an <code>os.File</code> value.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">f</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Open</span><span class="p">(</span><span class="s">&#34;/tmp/dat&#34;</span><span class="p">)</span>
<span class="nx">f</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Open</span><span class="p">(</span><span class="s">&#34;/tmp/dat&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -135,12 +126,10 @@ actually were read.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">b1</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">byte</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="nx">b1</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">byte</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">n1</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Read</span><span class="p">(</span><span class="nx">b1</span><span class="p">)</span>
<span class="nx">n1</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Read</span><span class="p">(</span><span class="nx">b1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%d bytes: %s\n&#34;</span><span class="p">,</span> <span class="nx">n1</span><span class="p">,</span> <span class="nb">string</span><span class="p">(</span><span class="nx">b1</span><span class="p">[:</span><span class="nx">n1</span><span class="p">]))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%d bytes: %s\n&#34;</span><span class="p">,</span> <span class="nx">n1</span><span class="p">,</span> <span class="nb">string</span><span class="p">(</span><span class="nx">b1</span><span class="p">[:</span><span class="nx">n1</span><span class="p">]))</span>
</pre>
</td> </td>
</tr> </tr>
@ -152,15 +141,13 @@ and <code>Read</code> from there.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">o2</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Seek</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="nx">o2</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Seek</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">b2</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">byte</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="nx">b2</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">byte</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">n2</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Read</span><span class="p">(</span><span class="nx">b2</span><span class="p">)</span>
<span class="nx">n2</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Read</span><span class="p">(</span><span class="nx">b2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%d bytes @ %d: &#34;</span><span class="p">,</span> <span class="nx">n2</span><span class="p">,</span> <span class="nx">o2</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%d bytes @ %d: &#34;</span><span class="p">,</span> <span class="nx">n2</span><span class="p">,</span> <span class="nx">o2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%v\n&#34;</span><span class="p">,</span> <span class="nb">string</span><span class="p">(</span><span class="nx">b2</span><span class="p">[:</span><span class="nx">n2</span><span class="p">]))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%v\n&#34;</span><span class="p">,</span> <span class="nb">string</span><span class="p">(</span><span class="nx">b2</span><span class="p">[:</span><span class="nx">n2</span><span class="p">]))</span>
</pre>
</td> </td>
</tr> </tr>
@ -174,14 +161,12 @@ implemented with <code>ReadAtLeast</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">o3</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Seek</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="nx">o3</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Seek</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">b3</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">byte</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="nx">b3</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">byte</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">n3</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">io</span><span class="p">.</span><span class="nf">ReadAtLeast</span><span class="p">(</span><span class="nx">f</span><span class="p">,</span> <span class="nx">b3</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="nx">n3</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">io</span><span class="p">.</span><span class="nf">ReadAtLeast</span><span class="p">(</span><span class="nx">f</span><span class="p">,</span> <span class="nx">b3</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%d bytes @ %d: %s\n&#34;</span><span class="p">,</span> <span class="nx">n3</span><span class="p">,</span> <span class="nx">o3</span><span class="p">,</span> <span class="nb">string</span><span class="p">(</span><span class="nx">b3</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%d bytes @ %d: %s\n&#34;</span><span class="p">,</span> <span class="nx">n3</span><span class="p">,</span> <span class="nx">o3</span><span class="p">,</span> <span class="nb">string</span><span class="p">(</span><span class="nx">b3</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -193,10 +178,8 @@ accomplishes this.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Seek</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="nx">_</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Seek</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -210,12 +193,10 @@ reading methods it provides.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">r4</span> <span class="o">:=</span> <span class="nx">bufio</span><span class="p">.</span><span class="nf">NewReader</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span>
<span class="nx">r4</span> <span class="o">:=</span> <span class="nx">bufio</span><span class="p">.</span><span class="nf">NewReader</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">b4</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">r4</span><span class="p">.</span><span class="nf">Peek</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
<span class="nx">b4</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">r4</span><span class="p">.</span><span class="nf">Peek</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;5 bytes: %s\n&#34;</span><span class="p">,</span> <span class="nb">string</span><span class="p">(</span><span class="nx">b4</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;5 bytes: %s\n&#34;</span><span class="p">,</span> <span class="nb">string</span><span class="p">(</span><span class="nx">b4</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -228,10 +209,8 @@ be scheduled immediately after <code>Open</code>ing with
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">f</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span>
<span class="nx">f</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -245,15 +224,15 @@ be scheduled immediately after <code>Open</code>ing with
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> echo &#34;hello&#34; &gt; /tmp/dat <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> echo &#34;hello&#34; &gt; /tmp/dat
<span class="gp">$</span> echo &#34;go&#34; &gt;&gt; /tmp/dat </span></span><span class="line"><span class="cl"><span class="gp">$</span> echo &#34;go&#34; &gt;&gt; /tmp/dat
<span class="gp">$</span> go run reading-files.go </span></span><span class="line"><span class="cl"><span class="gp">$</span> go run reading-files.go
<span class="go">hello </span></span><span class="line"><span class="cl"><span class="go">hello
</span><span class="go">go </span></span></span><span class="line"><span class="cl"><span class="go">go
</span><span class="go">5 bytes: hello </span></span></span><span class="line"><span class="cl"><span class="go">5 bytes: hello
</span><span class="go">2 bytes @ 6: go </span></span></span><span class="line"><span class="cl"><span class="go">2 bytes @ 6: go
</span><span class="go">2 bytes @ 6: go </span></span></span><span class="line"><span class="cl"><span class="go">2 bytes @ 6: go
</span><span class="go">5 bytes: hello</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">5 bytes: hello</span></span></span></code></pre>
</td> </td>
</tr> </tr>

44
public/recover generated
View File

@ -61,8 +61,7 @@ does by default for HTTP servers.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/Sk-SVdofEIZ"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/Sk-SVdofEIZ"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -72,8 +71,7 @@ does by default for HTTP servers.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,11 +82,9 @@ does by default for HTTP servers.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">mayPanic</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">mayPanic</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="s">&#34;a problem&#34;</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="s">&#34;a problem&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -102,8 +98,7 @@ the panic.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -115,9 +110,8 @@ the call to <code>panic</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="k">defer</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">defer</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">r</span> <span class="o">:=</span> <span class="nb">recover</span><span class="p">();</span> <span class="nx">r</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">r</span> <span class="o">:=</span> <span class="nb">recover</span><span class="p">();</span> <span class="nx">r</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -127,10 +121,9 @@ the call to <code>panic</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Recovered. Error:\n&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Recovered. Error:\n&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -140,8 +133,7 @@ the call to <code>panic</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nf">mayPanic</span><span class="p">()</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">mayPanic</span><span class="p">()</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -154,10 +146,8 @@ panic and resumes in the deferred closure.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;After mayPanic()&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;After mayPanic()&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -171,9 +161,9 @@ panic and resumes in the deferred closure.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run recover.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run recover.go
<span class="go">Recovered. Error: </span></span><span class="line"><span class="cl"><span class="go">Recovered. Error:
</span><span class="go"> a problem</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go"> a problem</span></span></span></code></pre>
</td> </td>
</tr> </tr>

55
public/recursion generated
View File

@ -44,8 +44,7 @@ Here&rsquo;s a classic example.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/MBTKk9VpAiK"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/MBTKk9VpAiK"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,8 +54,7 @@ Here&rsquo;s a classic example.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -68,14 +66,12 @@ base case of <code>fact(0)</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">fact</span><span class="p">(</span><span class="nx">n</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">fact</span><span class="p">(</span><span class="nx">n</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">n</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">n</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">1</span>
<span class="k">return</span> <span class="mi">1</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">n</span> <span class="o">*</span> <span class="nf">fact</span><span class="p">(</span><span class="nx">n</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="k">return</span> <span class="nx">n</span> <span class="o">*</span> <span class="nf">fact</span><span class="p">(</span><span class="nx">n</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -85,9 +81,8 @@ base case of <code>fact(0)</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">fact</span><span class="p">(</span><span class="mi">7</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">fact</span><span class="p">(</span><span class="mi">7</span><span class="p">))</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -100,9 +95,7 @@ before it&rsquo;s defined.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">fib</span> <span class="kd">func</span><span class="p">(</span><span class="nx">n</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span></span></span></code></pre>
<span class="kd">var</span> <span class="nx">fib</span> <span class="kd">func</span><span class="p">(</span><span class="nx">n</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span>
</pre>
</td> </td>
</tr> </tr>
@ -112,11 +105,10 @@ before it&rsquo;s defined.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">fib</span> <span class="p">=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">n</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fib</span> <span class="p">=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">n</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">n</span> <span class="p">&lt;</span> <span class="mi">2</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">n</span> <span class="p">&lt;</span> <span class="mi">2</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">n</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">n</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -128,10 +120,8 @@ knows which function to call with <code>fib</code> here.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">return</span> <span class="nf">fib</span><span class="p">(</span><span class="nx">n</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="nf">fib</span><span class="p">(</span><span class="nx">n</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span>
<span class="k">return</span> <span class="nf">fib</span><span class="p">(</span><span class="nx">n</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="nf">fib</span><span class="p">(</span><span class="nx">n</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -141,9 +131,8 @@ knows which function to call with <code>fib</code> here.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">fib</span><span class="p">(</span><span class="mi">7</span><span class="p">))</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">fib</span><span class="p">(</span><span class="mi">7</span><span class="p">))</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -157,9 +146,9 @@ knows which function to call with <code>fib</code> here.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run recursion.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run recursion.go
<span class="go">5040 </span></span><span class="line"><span class="cl"><span class="go">5040
</span><span class="go">13</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">13</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -44,8 +44,7 @@ in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/fI2YIfYsCaL"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/fI2YIfYsCaL"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,12 +54,11 @@ in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;bytes&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;bytes&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;regexp&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;regexp&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -70,8 +68,7 @@ in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -82,10 +79,8 @@ in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">match</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">regexp</span><span class="p">.</span><span class="nf">MatchString</span><span class="p">(</span><span class="s">&#34;p([a-z]+)ch&#34;</span><span class="p">,</span> <span class="s">&#34;peach&#34;</span><span class="p">)</span>
<span class="nx">match</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">regexp</span><span class="p">.</span><span class="nf">MatchString</span><span class="p">(</span><span class="s">&#34;p([a-z]+)ch&#34;</span><span class="p">,</span> <span class="s">&#34;peach&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">match</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">match</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -98,9 +93,7 @@ optimized <code>Regexp</code> struct.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">r</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">regexp</span><span class="p">.</span><span class="nf">Compile</span><span class="p">(</span><span class="s">&#34;p([a-z]+)ch&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">r</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">regexp</span><span class="p">.</span><span class="nf">Compile</span><span class="p">(</span><span class="s">&#34;p([a-z]+)ch&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -112,9 +105,7 @@ a match test like we saw earlier.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">MatchString</span><span class="p">(</span><span class="s">&#34;peach&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">MatchString</span><span class="p">(</span><span class="s">&#34;peach&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -125,9 +116,7 @@ a match test like we saw earlier.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindString</span><span class="p">(</span><span class="s">&#34;peach punch&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindString</span><span class="p">(</span><span class="s">&#34;peach punch&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -140,9 +129,7 @@ matching text.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;idx:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nf">FindStringIndex</span><span class="p">(</span><span class="s">&#34;peach punch&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;idx:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nf">FindStringIndex</span><span class="p">(</span><span class="s">&#34;peach punch&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -156,9 +143,7 @@ information for both <code>p([a-z]+)ch</code> and <code>([a-z]+)</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindStringSubmatch</span><span class="p">(</span><span class="s">&#34;peach punch&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindStringSubmatch</span><span class="p">(</span><span class="s">&#34;peach punch&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -170,9 +155,7 @@ indexes of matches and submatches.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindStringSubmatchIndex</span><span class="p">(</span><span class="s">&#34;peach punch&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindStringSubmatchIndex</span><span class="p">(</span><span class="s">&#34;peach punch&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -185,9 +168,7 @@ example to find all matches for a regexp.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindAllString</span><span class="p">(</span><span class="s">&#34;peach punch pinch&#34;</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindAllString</span><span class="p">(</span><span class="s">&#34;peach punch pinch&#34;</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -199,10 +180,8 @@ functions we saw above as well.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;all:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nf">FindAllStringSubmatchIndex</span><span class="p">(</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;all:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nf">FindAllStringSubmatchIndex</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;peach punch pinch&#34;</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span></span></span></code></pre>
<span class="s">&#34;peach punch pinch&#34;</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -215,9 +194,7 @@ of matches.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindAllString</span><span class="p">(</span><span class="s">&#34;peach punch pinch&#34;</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">FindAllString</span><span class="p">(</span><span class="s">&#34;peach punch pinch&#34;</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -231,9 +208,7 @@ function name.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">Match</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;peach&#34;</span><span class="p">)))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">Match</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;peach&#34;</span><span class="p">)))</span>
</pre>
</td> </td>
</tr> </tr>
@ -248,10 +223,8 @@ global variables.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">r</span> <span class="p">=</span> <span class="nx">regexp</span><span class="p">.</span><span class="nf">MustCompile</span><span class="p">(</span><span class="s">&#34;p([a-z]+)ch&#34;</span><span class="p">)</span>
<span class="nx">r</span> <span class="p">=</span> <span class="nx">regexp</span><span class="p">.</span><span class="nf">MustCompile</span><span class="p">(</span><span class="s">&#34;p([a-z]+)ch&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;regexp:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;regexp:&#34;</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -263,9 +236,7 @@ subsets of strings with other values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">ReplaceAllString</span><span class="p">(</span><span class="s">&#34;a peach&#34;</span><span class="p">,</span> <span class="s">&#34;&lt;fruit&gt;&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nf">ReplaceAllString</span><span class="p">(</span><span class="s">&#34;a peach&#34;</span><span class="p">,</span> <span class="s">&#34;&lt;fruit&gt;&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -277,12 +248,10 @@ text with a given function.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">in</span> <span class="o">:=</span> <span class="p">[]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;a peach&#34;</span><span class="p">)</span>
<span class="nx">in</span> <span class="o">:=</span> <span class="p">[]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;a peach&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">out</span> <span class="o">:=</span> <span class="nx">r</span><span class="p">.</span><span class="nf">ReplaceAllFunc</span><span class="p">(</span><span class="nx">in</span><span class="p">,</span> <span class="nx">bytes</span><span class="p">.</span><span class="nx">ToUpper</span><span class="p">)</span>
<span class="nx">out</span> <span class="o">:=</span> <span class="nx">r</span><span class="p">.</span><span class="nf">ReplaceAllFunc</span><span class="p">(</span><span class="nx">in</span><span class="p">,</span> <span class="nx">bytes</span><span class="p">.</span><span class="nx">ToUpper</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -296,20 +265,20 @@ text with a given function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run regular-expressions.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run regular-expressions.go
<span class="go">true </span></span><span class="line"><span class="cl"><span class="go">true
</span><span class="go">true </span></span></span><span class="line"><span class="cl"><span class="go">true
</span><span class="go">peach </span></span></span><span class="line"><span class="cl"><span class="go">peach
</span><span class="go">idx: [0 5] </span></span></span><span class="line"><span class="cl"><span class="go">idx: [0 5]
</span><span class="go">[peach ea] </span></span></span><span class="line"><span class="cl"><span class="go">[peach ea]
</span><span class="go">[0 5 1 3] </span></span></span><span class="line"><span class="cl"><span class="go">[0 5 1 3]
</span><span class="go">[peach punch pinch] </span></span></span><span class="line"><span class="cl"><span class="go">[peach punch pinch]
</span><span class="go">all: [[0 5 1 3] [6 11 7 9] [12 17 13 15]] </span></span></span><span class="line"><span class="cl"><span class="go">all: [[0 5 1 3] [6 11 7 9] [12 17 13 15]]
</span><span class="go">[peach punch] </span></span></span><span class="line"><span class="cl"><span class="go">[peach punch]
</span><span class="go">true </span></span></span><span class="line"><span class="cl"><span class="go">true
</span><span class="go">regexp: p([a-z]+)ch </span></span></span><span class="line"><span class="cl"><span class="go">regexp: p([a-z]+)ch
</span><span class="go">a &lt;fruit&gt; </span></span></span><span class="line"><span class="cl"><span class="go">a &lt;fruit&gt;
</span><span class="go">a PEACH</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">a PEACH</span></span></span></code></pre>
</td> </td>
</tr> </tr>

69
public/select generated
View File

@ -44,8 +44,7 @@ select is a powerful feature of Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/FzONhs4-tae"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/FzONhs4-tae"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,11 +54,10 @@ select is a powerful feature of Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,8 +67,7 @@ select is a powerful feature of Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -81,10 +78,8 @@ select is a powerful feature of Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">c1</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">)</span>
<span class="nx">c1</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">c2</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">)</span></span></span></code></pre>
<span class="nx">c2</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -97,16 +92,14 @@ executing in concurrent goroutines.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">1</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">1</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">c1</span> <span class="o">&lt;-</span> <span class="s">&#34;one&#34;</span>
<span class="nx">c1</span> <span class="o">&lt;-</span> <span class="s">&#34;one&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">c2</span> <span class="o">&lt;-</span> <span class="s">&#34;two&#34;</span>
<span class="nx">c2</span> <span class="o">&lt;-</span> <span class="s">&#34;two&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
<span class="p">}()</span>
</pre>
</td> </td>
</tr> </tr>
@ -118,17 +111,15 @@ simultaneously, printing each one as it arrives.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">2</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">2</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
<span class="k">select</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">msg1</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">c1</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">msg1</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">c1</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received&#34;</span><span class="p">,</span> <span class="nx">msg1</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received&#34;</span><span class="p">,</span> <span class="nx">msg1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">msg2</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">c2</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">msg2</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">c2</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received&#34;</span><span class="p">,</span> <span class="nx">msg2</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;received&#34;</span><span class="p">,</span> <span class="nx">msg2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -144,10 +135,9 @@ expected.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> time go run select.go
<span class="gp">$</span> time go run select.go </span></span><span class="line"><span class="cl"><span class="go">received one
<span class="go">received one </span></span></span><span class="line"><span class="cl"><span class="go">received two</span></span></span></code></pre>
</span><span class="go">received two</span></pre>
</td> </td>
</tr> </tr>
@ -160,8 +150,7 @@ concurrently.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="go">real 0m2.245s</span></span></span></code></pre>
<span class="go">real 0m2.245s</span></pre>
</td> </td>
</tr> </tr>

44
public/sha256-hashes generated
View File

@ -46,8 +46,7 @@ SHA256 hashes in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/IHM1lZVm_Jm"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/IHM1lZVm_Jm"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -59,12 +58,10 @@ SHA256 hashes in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="kn">import</span> <span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;crypto/sha256&#34;</span>
<span class="s">&#34;crypto/sha256&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
<span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -74,9 +71,8 @@ SHA256 hashes in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">s</span> <span class="o">:=</span> <span class="s">&#34;sha256 this string&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">s</span> <span class="o">:=</span> <span class="s">&#34;sha256 this string&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -87,9 +83,7 @@ SHA256 hashes in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">h</span> <span class="o">:=</span> <span class="nx">sha256</span><span class="p">.</span><span class="nf">New</span><span class="p">()</span></span></span></code></pre>
<span class="nx">h</span> <span class="o">:=</span> <span class="nx">sha256</span><span class="p">.</span><span class="nf">New</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -101,9 +95,7 @@ use <code>[]byte(s)</code> to coerce it to bytes.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">h</span><span class="p">.</span><span class="nf">Write</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span></span></span></code></pre>
<span class="nx">h</span><span class="p">.</span><span class="nf">Write</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -116,9 +108,7 @@ to an existing byte slice: it usually isn&rsquo;t needed.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">bs</span> <span class="o">:=</span> <span class="nx">h</span><span class="p">.</span><span class="nf">Sum</span><span class="p">(</span><span class="kc">nil</span><span class="p">)</span></span></span></code></pre>
<span class="nx">bs</span> <span class="o">:=</span> <span class="nx">h</span><span class="p">.</span><span class="nf">Sum</span><span class="p">(</span><span class="kc">nil</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -128,10 +118,9 @@ to an existing byte slice: it usually isn&rsquo;t needed.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%x\n&#34;</span><span class="p">,</span> <span class="nx">bs</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%x\n&#34;</span><span class="p">,</span> <span class="nx">bs</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -147,10 +136,9 @@ a human-readable hex format.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run sha256-hashes.go
<span class="gp">$</span> go run sha256-hashes.go </span></span><span class="line"><span class="cl"><span class="go">sha256 this string
<span class="go">sha256 this string </span></span></span><span class="line"><span class="cl"><span class="go">1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...</span></span></span></code></pre>
</span><span class="go">1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...</span></pre>
</td> </td>
</tr> </tr>

66
public/signals generated
View File

@ -47,8 +47,7 @@ Here&rsquo;s how to handle signals in Go with channels.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/RKLAbvblJMQ"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/RKLAbvblJMQ"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -58,13 +57,12 @@ Here&rsquo;s how to handle signals in Go with channels.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="s">&#34;os/signal&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os/signal&#34;</span>
<span class="s">&#34;syscall&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;syscall&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -74,8 +72,7 @@ Here&rsquo;s how to handle signals in Go with channels.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -89,9 +86,7 @@ should be buffered.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">sigs</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Signal</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></span></span></code></pre>
<span class="nx">sigs</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="nx">os</span><span class="p">.</span><span class="nx">Signal</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -103,9 +98,7 @@ receive notifications of the specified signals.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">signal</span><span class="p">.</span><span class="nf">Notify</span><span class="p">(</span><span class="nx">sigs</span><span class="p">,</span> <span class="nx">syscall</span><span class="p">.</span><span class="nx">SIGINT</span><span class="p">,</span> <span class="nx">syscall</span><span class="p">.</span><span class="nx">SIGTERM</span><span class="p">)</span></span></span></code></pre>
<span class="nx">signal</span><span class="p">.</span><span class="nf">Notify</span><span class="p">(</span><span class="nx">sigs</span><span class="p">,</span> <span class="nx">syscall</span><span class="p">.</span><span class="nx">SIGINT</span><span class="p">,</span> <span class="nx">syscall</span><span class="p">.</span><span class="nx">SIGTERM</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -119,9 +112,7 @@ a more realistic scenario of graceful shutdown.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></span></span></code></pre>
<span class="nx">done</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -134,8 +125,7 @@ and then notify the program that it can finish.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -145,12 +135,11 @@ and then notify the program that it can finish.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">sig</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">sigs</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">sig</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">sigs</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">sig</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">sig</span><span class="p">)</span>
<span class="nx">done</span> <span class="o">&lt;-</span> <span class="kc">true</span> </span></span><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o">&lt;-</span> <span class="kc">true</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -163,12 +152,10 @@ above sending a value on <code>done</code>) and then exit.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;awaiting signal&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;awaiting signal&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">done</span>
<span class="o">&lt;-</span><span class="nx">done</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;exiting&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;exiting&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -186,12 +173,11 @@ causing the program to print <code>interrupt</code> and then exit.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run signals.go
<span class="gp">$</span> go run signals.go </span></span><span class="line"><span class="cl"><span class="go">awaiting signal
<span class="go">awaiting signal </span></span></span><span class="line"><span class="cl"><span class="go">^C
</span><span class="go">^C </span></span></span><span class="line"><span class="cl"><span class="go">interrupt
</span><span class="go">interrupt </span></span></span><span class="line"><span class="cl"><span class="go">exiting</span></span></span></code></pre>
</span><span class="go">exiting</span></pre>
</td> </td>
</tr> </tr>

126
public/slices generated
View File

@ -43,8 +43,7 @@ a more powerful interface to sequences than arrays.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/553_cYPVlPH"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/553_cYPVlPH"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,8 +53,7 @@ a more powerful interface to sequences than arrays.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -65,8 +63,7 @@ a more powerful interface to sequences than arrays.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -80,10 +77,8 @@ length 0.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">s</span> <span class="p">[]</span><span class="kt">string</span>
<span class="kd">var</span> <span class="nx">s</span> <span class="p">[]</span><span class="kt">string</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;uninit:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">,</span> <span class="nx">s</span> <span class="o">==</span> <span class="kc">nil</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;uninit:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">,</span> <span class="nx">s</span> <span class="o">==</span> <span class="kc">nil</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -100,10 +95,8 @@ as an additional parameter to <code>make</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span> <span class="p">=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">string</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
<span class="nx">s</span> <span class="p">=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">string</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;emp:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">,</span> <span class="s">&#34;len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">),</span> <span class="s">&#34;cap:&#34;</span><span class="p">,</span> <span class="nb">cap</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;emp:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">,</span> <span class="s">&#34;len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">),</span> <span class="s">&#34;cap:&#34;</span><span class="p">,</span> <span class="nb">cap</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -114,13 +107,11 @@ as an additional parameter to <code>make</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="p">=</span> <span class="s">&#34;a&#34;</span>
<span class="nx">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="p">=</span> <span class="s">&#34;a&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">s</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="p">=</span> <span class="s">&#34;b&#34;</span>
<span class="nx">s</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="p">=</span> <span class="s">&#34;b&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">s</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="p">=</span> <span class="s">&#34;c&#34;</span>
<span class="nx">s</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="p">=</span> <span class="s">&#34;c&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;set:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;set:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;get:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;get:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
</pre>
</td> </td>
</tr> </tr>
@ -131,9 +122,7 @@ as an additional parameter to <code>make</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -149,11 +138,9 @@ Note that we need to accept a return value from
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">s</span><span class="p">,</span> <span class="s">&#34;d&#34;</span><span class="p">)</span>
<span class="nx">s</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">s</span><span class="p">,</span> <span class="s">&#34;d&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">s</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">s</span><span class="p">,</span> <span class="s">&#34;e&#34;</span><span class="p">,</span> <span class="s">&#34;f&#34;</span><span class="p">)</span>
<span class="nx">s</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">s</span><span class="p">,</span> <span class="s">&#34;e&#34;</span><span class="p">,</span> <span class="s">&#34;f&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;apd:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;apd:&#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -166,11 +153,9 @@ into <code>c</code> from <code>s</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">c</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">string</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span>
<span class="nx">c</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">string</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nb">copy</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span>
<span class="nb">copy</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;cpy:&#34;</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;cpy:&#34;</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -183,10 +168,8 @@ of the elements <code>s[2]</code>, <code>s[3]</code>, and <code>s[4]</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">l</span> <span class="o">:=</span> <span class="nx">s</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span>
<span class="nx">l</span> <span class="o">:=</span> <span class="nx">s</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sl1:&#34;</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sl1:&#34;</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -197,10 +180,8 @@ of the elements <code>s[2]</code>, <code>s[3]</code>, and <code>s[4]</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">l</span> <span class="p">=</span> <span class="nx">s</span><span class="p">[:</span><span class="mi">5</span><span class="p">]</span>
<span class="nx">l</span> <span class="p">=</span> <span class="nx">s</span><span class="p">[:</span><span class="mi">5</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sl2:&#34;</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sl2:&#34;</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -211,10 +192,8 @@ of the elements <code>s[2]</code>, <code>s[3]</code>, and <code>s[4]</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">l</span> <span class="p">=</span> <span class="nx">s</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span>
<span class="nx">l</span> <span class="p">=</span> <span class="nx">s</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sl3:&#34;</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;sl3:&#34;</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -226,10 +205,8 @@ in a single line as well.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;g&#34;</span><span class="p">,</span> <span class="s">&#34;h&#34;</span><span class="p">,</span> <span class="s">&#34;i&#34;</span><span class="p">}</span>
<span class="nx">t</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;g&#34;</span><span class="p">,</span> <span class="s">&#34;h&#34;</span><span class="p">,</span> <span class="s">&#34;i&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;dcl:&#34;</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;dcl:&#34;</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -242,18 +219,16 @@ vary, unlike with multi-dimensional arrays.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">twoD</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([][]</span><span class="kt">int</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
<span class="nx">twoD</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([][]</span><span class="kt">int</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">innerLen</span> <span class="o">:=</span> <span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span>
<span class="nx">innerLen</span> <span class="o">:=</span> <span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span> </span></span><span class="line"><span class="cl"> <span class="nx">twoD</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="p">=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">int</span><span class="p">,</span> <span class="nx">innerLen</span><span class="p">)</span>
<span class="nx">twoD</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="p">=</span> <span class="nb">make</span><span class="p">([]</span><span class="kt">int</span><span class="p">,</span> <span class="nx">innerLen</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="p">&lt;</span> <span class="nx">innerLen</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="p">&lt;</span> <span class="nx">innerLen</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">twoD</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span> <span class="p">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="nx">j</span>
<span class="nx">twoD</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span> <span class="p">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="nx">j</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;2d: &#34;</span><span class="p">,</span> <span class="nx">twoD</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;2d: &#34;</span><span class="p">,</span> <span class="nx">twoD</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -269,20 +244,19 @@ they are rendered similarly by <code>fmt.Println</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run slices.go
<span class="gp">$</span> go run slices.go </span></span><span class="line"><span class="cl"><span class="go">uninit: [] true true
<span class="go">uninit: [] true true </span></span></span><span class="line"><span class="cl"><span class="go">emp: [ ] len: 3 cap: 3
</span><span class="go">emp: [ ] len: 3 cap: 3 </span></span></span><span class="line"><span class="cl"><span class="go">set: [a b c]
</span><span class="go">set: [a b c] </span></span></span><span class="line"><span class="cl"><span class="go">get: c
</span><span class="go">get: c </span></span></span><span class="line"><span class="cl"><span class="go">len: 3
</span><span class="go">len: 3 </span></span></span><span class="line"><span class="cl"><span class="go">apd: [a b c d e f]
</span><span class="go">apd: [a b c d e f] </span></span></span><span class="line"><span class="cl"><span class="go">cpy: [a b c d e f]
</span><span class="go">cpy: [a b c d e f] </span></span></span><span class="line"><span class="cl"><span class="go">sl1: [c d e]
</span><span class="go">sl1: [c d e] </span></span></span><span class="line"><span class="cl"><span class="go">sl2: [a b c d e]
</span><span class="go">sl2: [a b c d e] </span></span></span><span class="line"><span class="cl"><span class="go">sl3: [c d e f]
</span><span class="go">sl3: [c d e f] </span></span></span><span class="line"><span class="cl"><span class="go">dcl: [g h i]
</span><span class="go">dcl: [g h i] </span></span></span><span class="line"><span class="cl"><span class="go">2d: [[0] [1 2] [2 3 4]]</span></span></span></code></pre>
</span><span class="go">2d: [[0] [1 2] [2 3 4]]</span></pre>
</td> </td>
</tr> </tr>

48
public/sorting generated
View File

@ -44,8 +44,7 @@ builtins first.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/_gY0tANzJ4l"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/_gY0tANzJ4l"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,11 +54,10 @@ builtins first.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;sort&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;sort&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,8 +67,7 @@ builtins first.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,11 +81,9 @@ return a new one.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">strs</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;c&#34;</span><span class="p">,</span> <span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">}</span>
<span class="nx">strs</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;c&#34;</span><span class="p">,</span> <span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">sort</span><span class="p">.</span><span class="nf">Strings</span><span class="p">(</span><span class="nx">strs</span><span class="p">)</span>
<span class="nx">sort</span><span class="p">.</span><span class="nf">Strings</span><span class="p">(</span><span class="nx">strs</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Strings:&#34;</span><span class="p">,</span> <span class="nx">strs</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Strings:&#34;</span><span class="p">,</span> <span class="nx">strs</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -99,11 +94,9 @@ return a new one.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">ints</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">}</span>
<span class="nx">ints</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">sort</span><span class="p">.</span><span class="nf">Ints</span><span class="p">(</span><span class="nx">ints</span><span class="p">)</span>
<span class="nx">sort</span><span class="p">.</span><span class="nf">Ints</span><span class="p">(</span><span class="nx">ints</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Ints: &#34;</span><span class="p">,</span> <span class="nx">ints</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Ints: &#34;</span><span class="p">,</span> <span class="nx">ints</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -115,11 +108,9 @@ already in sorted order.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span> <span class="o">:=</span> <span class="nx">sort</span><span class="p">.</span><span class="nf">IntsAreSorted</span><span class="p">(</span><span class="nx">ints</span><span class="p">)</span>
<span class="nx">s</span> <span class="o">:=</span> <span class="nx">sort</span><span class="p">.</span><span class="nf">IntsAreSorted</span><span class="p">(</span><span class="nx">ints</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Sorted: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Sorted: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -135,11 +126,10 @@ slices and <code>true</code> as the result of our <code>AreSorted</code> test.</
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run sorting.go
<span class="gp">$</span> go run sorting.go </span></span><span class="line"><span class="cl"><span class="go">Strings: [a b c]
<span class="go">Strings: [a b c] </span></span></span><span class="line"><span class="cl"><span class="go">Ints: [2 4 7]
</span><span class="go">Ints: [2 4 7] </span></span></span><span class="line"><span class="cl"><span class="go">Sorted: true</span></span></span></code></pre>
</span><span class="go">Sorted: true</span></pre>
</td> </td>
</tr> </tr>

View File

@ -46,8 +46,7 @@ in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/h4g4vaLBtkw"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/h4g4vaLBtkw"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -57,11 +56,10 @@ in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;sort&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;sort&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -75,9 +73,7 @@ type.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">byLength</span> <span class="p">[]</span><span class="kt">string</span></span></span></code></pre>
<span class="kd">type</span> <span class="nx">byLength</span> <span class="p">[]</span><span class="kt">string</span>
</pre>
</td> </td>
</tr> </tr>
@ -94,17 +90,15 @@ we use <code>len(s[i])</code> and <code>len(s[j])</code> here.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">s</span> <span class="nx">byLength</span><span class="p">)</span> <span class="nf">Len</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">s</span> <span class="nx">byLength</span><span class="p">)</span> <span class="nf">Len</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span>
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">s</span> <span class="nx">byLength</span><span class="p">)</span> <span class="nf">Swap</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">j</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">s</span> <span class="nx">byLength</span><span class="p">)</span> <span class="nf">Swap</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">j</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">s</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="p">=</span> <span class="nx">s</span><span class="p">[</span><span class="nx">j</span><span class="p">],</span> <span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
<span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">s</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="p">=</span> <span class="nx">s</span><span class="p">[</span><span class="nx">j</span><span class="p">],</span> <span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> </span></span><span class="line"><span class="cl"><span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">s</span> <span class="nx">byLength</span><span class="p">)</span> <span class="nf">Less</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">j</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">bool</span> <span class="p">{</span>
<span class="kd">func</span> <span class="p">(</span><span class="nx">s</span> <span class="nx">byLength</span><span class="p">)</span> <span class="nf">Less</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">j</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">bool</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="p">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">j</span><span class="p">])</span>
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="p">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">j</span><span class="p">])</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -118,13 +112,11 @@ slice.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fruits</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;peach&#34;</span><span class="p">,</span> <span class="s">&#34;banana&#34;</span><span class="p">,</span> <span class="s">&#34;kiwi&#34;</span><span class="p">}</span>
<span class="nx">fruits</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;peach&#34;</span><span class="p">,</span> <span class="s">&#34;banana&#34;</span><span class="p">,</span> <span class="s">&#34;kiwi&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">sort</span><span class="p">.</span><span class="nf">Sort</span><span class="p">(</span><span class="nf">byLength</span><span class="p">(</span><span class="nx">fruits</span><span class="p">))</span>
<span class="nx">sort</span><span class="p">.</span><span class="nf">Sort</span><span class="p">(</span><span class="nf">byLength</span><span class="p">(</span><span class="nx">fruits</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">fruits</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">fruits</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -140,9 +132,8 @@ length, as desired.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run sorting-by-functions.go
<span class="gp">$</span> go run sorting-by-functions.go </span></span><span class="line"><span class="cl"><span class="go">[kiwi peach banana]</span></span></span></code></pre>
<span class="go">[kiwi peach banana]</span></pre>
</td> </td>
</tr> </tr>

View File

@ -43,8 +43,7 @@ processes.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/rmnQdR-dMWU"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/rmnQdR-dMWU"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,12 +53,11 @@ processes.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;io&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;io&#34;</span>
<span class="s">&#34;os/exec&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os/exec&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,8 +67,7 @@ processes.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,9 +81,7 @@ to represent this external process.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">dateCmd</span> <span class="o">:=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">Command</span><span class="p">(</span><span class="s">&#34;date&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">dateCmd</span> <span class="o">:=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">Command</span><span class="p">(</span><span class="s">&#34;date&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -100,14 +95,12 @@ with the date info.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">dateOut</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">dateCmd</span><span class="p">.</span><span class="nf">Output</span><span class="p">()</span>
<span class="nx">dateOut</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">dateCmd</span><span class="p">.</span><span class="nf">Output</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;&gt; date&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;&gt; date&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">dateOut</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">dateOut</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -122,19 +115,17 @@ code.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">Command</span><span class="p">(</span><span class="s">&#34;date&#34;</span><span class="p">,</span> <span class="s">&#34;-x&#34;</span><span class="p">).</span><span class="nf">Output</span><span class="p">()</span>
<span class="nx">_</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">Command</span><span class="p">(</span><span class="s">&#34;date&#34;</span><span class="p">,</span> <span class="s">&#34;-x&#34;</span><span class="p">).</span><span class="nf">Output</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">switch</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">err</span><span class="p">.(</span><span class="kd">type</span><span class="p">)</span> <span class="p">{</span>
<span class="k">switch</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">err</span><span class="p">.(</span><span class="kd">type</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o">*</span><span class="nx">exec</span><span class="p">.</span><span class="nx">Error</span><span class="p">:</span>
<span class="k">case</span> <span class="o">*</span><span class="nx">exec</span><span class="p">.</span><span class="nx">Error</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;failed executing:&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;failed executing:&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o">*</span><span class="nx">exec</span><span class="p">.</span><span class="nx">ExitError</span><span class="p">:</span>
<span class="k">case</span> <span class="o">*</span><span class="nx">exec</span><span class="p">.</span><span class="nx">ExitError</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;command exit rc =&#34;</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nf">ExitCode</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;command exit rc =&#34;</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nf">ExitCode</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="k">default</span><span class="p">:</span>
<span class="k">default</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -147,9 +138,7 @@ where we pipe data to the external process on its
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">grepCmd</span> <span class="o">:=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">Command</span><span class="p">(</span><span class="s">&#34;grep&#34;</span><span class="p">,</span> <span class="s">&#34;hello&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">grepCmd</span> <span class="o">:=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">Command</span><span class="p">(</span><span class="s">&#34;grep&#34;</span><span class="p">,</span> <span class="s">&#34;hello&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -163,15 +152,13 @@ to exit.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">grepIn</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">grepCmd</span><span class="p">.</span><span class="nf">StdinPipe</span><span class="p">()</span>
<span class="nx">grepIn</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">grepCmd</span><span class="p">.</span><span class="nf">StdinPipe</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">grepOut</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">grepCmd</span><span class="p">.</span><span class="nf">StdoutPipe</span><span class="p">()</span>
<span class="nx">grepOut</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">grepCmd</span><span class="p">.</span><span class="nf">StdoutPipe</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">grepCmd</span><span class="p">.</span><span class="nf">Start</span><span class="p">()</span>
<span class="nx">grepCmd</span><span class="p">.</span><span class="nf">Start</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">grepIn</span><span class="p">.</span><span class="nf">Write</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;hello grep\ngoodbye grep&#34;</span><span class="p">))</span>
<span class="nx">grepIn</span><span class="p">.</span><span class="nf">Write</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;hello grep\ngoodbye grep&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">grepIn</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span>
<span class="nx">grepIn</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">grepBytes</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">io</span><span class="p">.</span><span class="nf">ReadAll</span><span class="p">(</span><span class="nx">grepOut</span><span class="p">)</span>
<span class="nx">grepBytes</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">io</span><span class="p">.</span><span class="nf">ReadAll</span><span class="p">(</span><span class="nx">grepOut</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">grepCmd</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span></span></span></code></pre>
<span class="nx">grepCmd</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -186,10 +173,8 @@ exactly the same way.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;&gt; grep hello&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;&gt; grep hello&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">grepBytes</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">grepBytes</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -205,16 +190,14 @@ option:</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">lsCmd</span> <span class="o">:=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">Command</span><span class="p">(</span><span class="s">&#34;bash&#34;</span><span class="p">,</span> <span class="s">&#34;-c&#34;</span><span class="p">,</span> <span class="s">&#34;ls -a -l -h&#34;</span><span class="p">)</span>
<span class="nx">lsCmd</span> <span class="o">:=</span> <span class="nx">exec</span><span class="p">.</span><span class="nf">Command</span><span class="p">(</span><span class="s">&#34;bash&#34;</span><span class="p">,</span> <span class="s">&#34;-c&#34;</span><span class="p">,</span> <span class="s">&#34;ls -a -l -h&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">lsOut</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">lsCmd</span><span class="p">.</span><span class="nf">Output</span><span class="p">()</span>
<span class="nx">lsOut</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">lsCmd</span><span class="p">.</span><span class="nf">Output</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;&gt; ls -a -l -h&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;&gt; ls -a -l -h&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">lsOut</span><span class="p">))</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">lsOut</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -230,10 +213,9 @@ as if we had run them directly from the command-line.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run spawning-processes.go
<span class="gp">$</span> go run spawning-processes.go </span></span><span class="line"><span class="cl"><span class="gp">&gt;</span> date
<span class="gp">&gt;</span> date </span></span><span class="line"><span class="cl"><span class="go">Thu 05 May 2022 10:10:12 PM PDT</span></span></span></code></pre>
<span class="go">Thu 05 May 2022 10:10:12 PM PDT</span></pre>
</td> </td>
</tr> </tr>
@ -245,10 +227,9 @@ an error message and non-zero return code.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="go">command exited with rc = 1
<span class="go">command exited with rc = 1 </span></span></span><span class="line"><span class="cl"><span class="go"></span><span class="gp">&gt;</span> grep hello
</span><span class="go"></span><span class="gp">&gt;</span> grep hello </span></span><span class="line"><span class="cl"><span class="go">hello grep</span></span></span></code></pre>
<span class="go">hello grep</span></pre>
</td> </td>
</tr> </tr>
@ -258,10 +239,10 @@ an error message and non-zero return code.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">&gt;</span> ls -a -l -h <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">&gt;</span> ls -a -l -h
<span class="go">drwxr-xr-x 4 mark 136B Oct 3 16:29 . </span></span><span class="line"><span class="cl"><span class="go">drwxr-xr-x 4 mark 136B Oct 3 16:29 .
</span><span class="go">drwxr-xr-x 91 mark 3.0K Oct 3 12:50 .. </span></span></span><span class="line"><span class="cl"><span class="go">drwxr-xr-x 91 mark 3.0K Oct 3 12:50 ..
</span><span class="go">-rw-r--r-- 1 mark 1.3K Oct 3 16:28 spawning-processes.go</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">-rw-r--r-- 1 mark 1.3K Oct 3 16:28 spawning-processes.go</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -49,8 +49,7 @@ by exactly 1 goroutine.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/TBcWd-OfnaA"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/TBcWd-OfnaA"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -60,13 +59,12 @@ by exactly 1 goroutine.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;math/rand&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;math/rand&#34;</span>
<span class="s">&#34;sync/atomic&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;sync/atomic&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,17 +82,15 @@ goroutine to respond.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">readOp</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">readOp</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">key</span> <span class="kt">int</span>
<span class="nx">key</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">resp</span> <span class="kd">chan</span> <span class="kt">int</span>
<span class="nx">resp</span> <span class="kd">chan</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"><span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">writeOp</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">writeOp</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">key</span> <span class="kt">int</span>
<span class="nx">key</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">val</span> <span class="kt">int</span>
<span class="nx">val</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">resp</span> <span class="kd">chan</span> <span class="kt">bool</span>
<span class="nx">resp</span> <span class="kd">chan</span> <span class="kt">bool</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -104,8 +100,7 @@ goroutine to respond.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -116,10 +111,8 @@ goroutine to respond.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">readOps</span> <span class="kt">uint64</span>
<span class="kd">var</span> <span class="nx">readOps</span> <span class="kt">uint64</span> </span></span><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">writeOps</span> <span class="kt">uint64</span></span></span></code></pre>
<span class="kd">var</span> <span class="nx">writeOps</span> <span class="kt">uint64</span>
</pre>
</td> </td>
</tr> </tr>
@ -132,10 +125,8 @@ respectively.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">reads</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="nx">readOp</span><span class="p">)</span>
<span class="nx">reads</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="nx">readOp</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">writes</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="nx">writeOp</span><span class="p">)</span></span></span></code></pre>
<span class="nx">writes</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="nx">writeOp</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -154,20 +145,18 @@ value in the case of <code>reads</code>).</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">state</span> <span class="p">=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">map</span><span class="p">[</span><span class="kt">int</span><span class="p">]</span><span class="kt">int</span><span class="p">)</span>
<span class="kd">var</span> <span class="nx">state</span> <span class="p">=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">map</span><span class="p">[</span><span class="kt">int</span><span class="p">]</span><span class="kt">int</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
<span class="k">select</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">read</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">reads</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">read</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">reads</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">read</span><span class="p">.</span><span class="nx">resp</span> <span class="o">&lt;-</span> <span class="nx">state</span><span class="p">[</span><span class="nx">read</span><span class="p">.</span><span class="nx">key</span><span class="p">]</span>
<span class="nx">read</span><span class="p">.</span><span class="nx">resp</span> <span class="o">&lt;-</span> <span class="nx">state</span><span class="p">[</span><span class="nx">read</span><span class="p">.</span><span class="nx">key</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">write</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">writes</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">write</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">writes</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">state</span><span class="p">[</span><span class="nx">write</span><span class="p">.</span><span class="nx">key</span><span class="p">]</span> <span class="p">=</span> <span class="nx">write</span><span class="p">.</span><span class="nx">val</span>
<span class="nx">state</span><span class="p">[</span><span class="nx">write</span><span class="p">.</span><span class="nx">key</span><span class="p">]</span> <span class="p">=</span> <span class="nx">write</span><span class="p">.</span><span class="nx">val</span> </span></span><span class="line"><span class="cl"> <span class="nx">write</span><span class="p">.</span><span class="nx">resp</span> <span class="o">&lt;-</span> <span class="kc">true</span>
<span class="nx">write</span><span class="p">.</span><span class="nx">resp</span> <span class="o">&lt;-</span> <span class="kc">true</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
<span class="p">}()</span>
</pre>
</td> </td>
</tr> </tr>
@ -182,21 +171,19 @@ result over the provided <code>resp</code> channel.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">r</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">r</span> <span class="p">&lt;</span> <span class="mi">100</span><span class="p">;</span> <span class="nx">r</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">r</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">r</span> <span class="p">&lt;</span> <span class="mi">100</span><span class="p">;</span> <span class="nx">r</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">read</span> <span class="o">:=</span> <span class="nx">readOp</span><span class="p">{</span>
<span class="nx">read</span> <span class="o">:=</span> <span class="nx">readOp</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">key</span><span class="p">:</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span>
<span class="nx">key</span><span class="p">:</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">resp</span><span class="p">:</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">)}</span>
<span class="nx">resp</span><span class="p">:</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">)}</span> </span></span><span class="line"><span class="cl"> <span class="nx">reads</span> <span class="o">&lt;-</span> <span class="nx">read</span>
<span class="nx">reads</span> <span class="o">&lt;-</span> <span class="nx">read</span> </span></span><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">read</span><span class="p">.</span><span class="nx">resp</span>
<span class="o">&lt;-</span><span class="nx">read</span><span class="p">.</span><span class="nx">resp</span> </span></span><span class="line"><span class="cl"> <span class="nx">atomic</span><span class="p">.</span><span class="nf">AddUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">readOps</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="nx">atomic</span><span class="p">.</span><span class="nf">AddUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">readOps</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -208,22 +195,20 @@ approach.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">w</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">w</span> <span class="p">&lt;</span> <span class="mi">10</span><span class="p">;</span> <span class="nx">w</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">w</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">w</span> <span class="p">&lt;</span> <span class="mi">10</span><span class="p">;</span> <span class="nx">w</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">write</span> <span class="o">:=</span> <span class="nx">writeOp</span><span class="p">{</span>
<span class="nx">write</span> <span class="o">:=</span> <span class="nx">writeOp</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">key</span><span class="p">:</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span>
<span class="nx">key</span><span class="p">:</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">val</span><span class="p">:</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span>
<span class="nx">val</span><span class="p">:</span> <span class="nx">rand</span><span class="p">.</span><span class="nf">Intn</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">resp</span><span class="p">:</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">)}</span>
<span class="nx">resp</span><span class="p">:</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">)}</span> </span></span><span class="line"><span class="cl"> <span class="nx">writes</span> <span class="o">&lt;-</span> <span class="nx">write</span>
<span class="nx">writes</span> <span class="o">&lt;-</span> <span class="nx">write</span> </span></span><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">write</span><span class="p">.</span><span class="nx">resp</span>
<span class="o">&lt;-</span><span class="nx">write</span><span class="p">.</span><span class="nx">resp</span> </span></span><span class="line"><span class="cl"> <span class="nx">atomic</span><span class="p">.</span><span class="nf">AddUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">writeOps</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="nx">atomic</span><span class="p">.</span><span class="nf">AddUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">writeOps</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -234,9 +219,7 @@ approach.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span></span></span></code></pre>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -247,13 +230,11 @@ approach.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">readOpsFinal</span> <span class="o">:=</span> <span class="nx">atomic</span><span class="p">.</span><span class="nf">LoadUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">readOps</span><span class="p">)</span>
<span class="nx">readOpsFinal</span> <span class="o">:=</span> <span class="nx">atomic</span><span class="p">.</span><span class="nf">LoadUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">readOps</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;readOps:&#34;</span><span class="p">,</span> <span class="nx">readOpsFinal</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;readOps:&#34;</span><span class="p">,</span> <span class="nx">readOpsFinal</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">writeOpsFinal</span> <span class="o">:=</span> <span class="nx">atomic</span><span class="p">.</span><span class="nf">LoadUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">writeOps</span><span class="p">)</span>
<span class="nx">writeOpsFinal</span> <span class="o">:=</span> <span class="nx">atomic</span><span class="p">.</span><span class="nf">LoadUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">writeOps</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;writeOps:&#34;</span><span class="p">,</span> <span class="nx">writeOpsFinal</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;writeOps:&#34;</span><span class="p">,</span> <span class="nx">writeOpsFinal</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -270,10 +251,9 @@ total operations.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run stateful-goroutines.go
<span class="gp">$</span> go run stateful-goroutines.go </span></span><span class="line"><span class="cl"><span class="go">readOps: 71708
<span class="go">readOps: 71708 </span></span></span><span class="line"><span class="cl"><span class="go">writeOps: 7177</span></span></span></code></pre>
</span><span class="go">writeOps: 7177</span></pre>
</td> </td>
</tr> </tr>

166
public/string-formatting generated
View File

@ -44,8 +44,7 @@ common string formatting tasks.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/EZCZX1Uwp6D"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/EZCZX1Uwp6D"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,11 +54,10 @@ common string formatting tasks.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,10 +67,9 @@ common string formatting tasks.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">type</span> <span class="nx">point</span> <span class="kd">struct</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">point</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="nx">x</span><span class="p">,</span> <span class="nx">y</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">x</span><span class="p">,</span> <span class="nx">y</span> <span class="kt">int</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -82,8 +79,7 @@ common string formatting tasks.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -96,10 +92,8 @@ an instance of our <code>point</code> struct.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">p</span> <span class="o">:=</span> <span class="nx">point</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">}</span>
<span class="nx">p</span> <span class="o">:=</span> <span class="nx">point</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;struct1: %v\n&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;struct1: %v\n&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -111,9 +105,7 @@ include the struct&rsquo;s field names.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;struct2: %+v\n&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;struct2: %+v\n&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -126,9 +118,7 @@ would produce that value.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;struct3: %#v\n&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;struct3: %#v\n&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -139,9 +129,7 @@ would produce that value.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;type: %T\n&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;type: %T\n&#34;</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -152,9 +140,7 @@ would produce that value.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;bool: %t\n&#34;</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;bool: %t\n&#34;</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -166,9 +152,7 @@ Use <code>%d</code> for standard, base-10 formatting.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;int: %d\n&#34;</span><span class="p">,</span> <span class="mi">123</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;int: %d\n&#34;</span><span class="p">,</span> <span class="mi">123</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -179,9 +163,7 @@ Use <code>%d</code> for standard, base-10 formatting.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;bin: %b\n&#34;</span><span class="p">,</span> <span class="mi">14</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;bin: %b\n&#34;</span><span class="p">,</span> <span class="mi">14</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -193,9 +175,7 @@ given integer.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;char: %c\n&#34;</span><span class="p">,</span> <span class="mi">33</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;char: %c\n&#34;</span><span class="p">,</span> <span class="mi">33</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -206,9 +186,7 @@ given integer.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;hex: %x\n&#34;</span><span class="p">,</span> <span class="mi">456</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;hex: %x\n&#34;</span><span class="p">,</span> <span class="mi">456</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -220,9 +198,7 @@ floats. For basic decimal formatting use <code>%f</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;float1: %f\n&#34;</span><span class="p">,</span> <span class="mf">78.9</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;float1: %f\n&#34;</span><span class="p">,</span> <span class="mf">78.9</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -234,10 +210,8 @@ different versions of) scientific notation.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;float2: %e\n&#34;</span><span class="p">,</span> <span class="mf">123400000.0</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;float2: %e\n&#34;</span><span class="p">,</span> <span class="mf">123400000.0</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;float3: %E\n&#34;</span><span class="p">,</span> <span class="mf">123400000.0</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;float3: %E\n&#34;</span><span class="p">,</span> <span class="mf">123400000.0</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -248,9 +222,7 @@ different versions of) scientific notation.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;str1: %s\n&#34;</span><span class="p">,</span> <span class="s">&#34;\&#34;string\&#34;&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;str1: %s\n&#34;</span><span class="p">,</span> <span class="s">&#34;\&#34;string\&#34;&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -261,9 +233,7 @@ different versions of) scientific notation.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;str2: %q\n&#34;</span><span class="p">,</span> <span class="s">&#34;\&#34;string\&#34;&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;str2: %q\n&#34;</span><span class="p">,</span> <span class="s">&#34;\&#34;string\&#34;&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -276,9 +246,7 @@ per byte of input.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;str3: %x\n&#34;</span><span class="p">,</span> <span class="s">&#34;hex this&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;str3: %x\n&#34;</span><span class="p">,</span> <span class="s">&#34;hex this&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -289,9 +257,7 @@ per byte of input.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;pointer: %p\n&#34;</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">p</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;pointer: %p\n&#34;</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">p</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -307,9 +273,7 @@ spaces.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width1: |%6d|%6d|\n&#34;</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">345</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width1: |%6d|%6d|\n&#34;</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">345</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -323,9 +287,7 @@ width.precision syntax.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width2: |%6.2f|%6.2f|\n&#34;</span><span class="p">,</span> <span class="mf">1.2</span><span class="p">,</span> <span class="mf">3.45</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width2: |%6.2f|%6.2f|\n&#34;</span><span class="p">,</span> <span class="mf">1.2</span><span class="p">,</span> <span class="mf">3.45</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -336,9 +298,7 @@ width.precision syntax.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width3: |%-6.2f|%-6.2f|\n&#34;</span><span class="p">,</span> <span class="mf">1.2</span><span class="p">,</span> <span class="mf">3.45</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width3: |%-6.2f|%-6.2f|\n&#34;</span><span class="p">,</span> <span class="mf">1.2</span><span class="p">,</span> <span class="mf">3.45</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -351,9 +311,7 @@ table-like output. For basic right-justified width.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width4: |%6s|%6s|\n&#34;</span><span class="p">,</span> <span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width4: |%6s|%6s|\n&#34;</span><span class="p">,</span> <span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -364,9 +322,7 @@ table-like output. For basic right-justified width.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width5: |%-6s|%-6s|\n&#34;</span><span class="p">,</span> <span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;width5: |%-6s|%-6s|\n&#34;</span><span class="p">,</span> <span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -379,10 +335,8 @@ and returns a string without printing it anywhere.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;sprintf: a %s&#34;</span><span class="p">,</span> <span class="s">&#34;string&#34;</span><span class="p">)</span>
<span class="nx">s</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;sprintf: a %s&#34;</span><span class="p">,</span> <span class="s">&#34;string&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -394,10 +348,8 @@ and returns a string without printing it anywhere.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stderr</span><span class="p">,</span> <span class="s">&#34;io: an %s\n&#34;</span><span class="p">,</span> <span class="s">&#34;error&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Fprintf</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stderr</span><span class="p">,</span> <span class="s">&#34;io: an %s\n&#34;</span><span class="p">,</span> <span class="s">&#34;error&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -411,30 +363,30 @@ and returns a string without printing it anywhere.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run string-formatting.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run string-formatting.go
<span class="go">struct1: {1 2} </span></span><span class="line"><span class="cl"><span class="go">struct1: {1 2}
</span><span class="go">struct2: {x:1 y:2} </span></span></span><span class="line"><span class="cl"><span class="go">struct2: {x:1 y:2}
</span><span class="go">struct3: main.point{x:1, y:2} </span></span></span><span class="line"><span class="cl"><span class="go">struct3: main.point{x:1, y:2}
</span><span class="go">type: main.point </span></span></span><span class="line"><span class="cl"><span class="go">type: main.point
</span><span class="go">bool: true </span></span></span><span class="line"><span class="cl"><span class="go">bool: true
</span><span class="go">int: 123 </span></span></span><span class="line"><span class="cl"><span class="go">int: 123
</span><span class="go">bin: 1110 </span></span></span><span class="line"><span class="cl"><span class="go">bin: 1110
</span><span class="go">char: ! </span></span></span><span class="line"><span class="cl"><span class="go">char: !
</span><span class="go">hex: 1c8 </span></span></span><span class="line"><span class="cl"><span class="go">hex: 1c8
</span><span class="go">float1: 78.900000 </span></span></span><span class="line"><span class="cl"><span class="go">float1: 78.900000
</span><span class="go">float2: 1.234000e+08 </span></span></span><span class="line"><span class="cl"><span class="go">float2: 1.234000e+08
</span><span class="go">float3: 1.234000E+08 </span></span></span><span class="line"><span class="cl"><span class="go">float3: 1.234000E+08
</span><span class="go">str1: &#34;string&#34; </span></span></span><span class="line"><span class="cl"><span class="go">str1: &#34;string&#34;
</span><span class="go">str2: &#34;\&#34;string\&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="go">str2: &#34;\&#34;string\&#34;&#34;
</span><span class="go">str3: 6865782074686973 </span></span></span><span class="line"><span class="cl"><span class="go">str3: 6865782074686973
</span><span class="go">pointer: 0xc0000ba000 </span></span></span><span class="line"><span class="cl"><span class="go">pointer: 0xc0000ba000
</span><span class="go">width1: | 12| 345| </span></span></span><span class="line"><span class="cl"><span class="go">width1: | 12| 345|
</span><span class="go">width2: | 1.20| 3.45| </span></span></span><span class="line"><span class="cl"><span class="go">width2: | 1.20| 3.45|
</span><span class="go">width3: |1.20 |3.45 | </span></span></span><span class="line"><span class="cl"><span class="go">width3: |1.20 |3.45 |
</span><span class="go">width4: | foo| b| </span></span></span><span class="line"><span class="cl"><span class="go">width4: | foo| b|
</span><span class="go">width5: |foo |b | </span></span></span><span class="line"><span class="cl"><span class="go">width5: |foo |b |
</span><span class="go">sprintf: a string </span></span></span><span class="line"><span class="cl"><span class="go">sprintf: a string
</span><span class="go">io: an error</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">io: an error</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -44,8 +44,7 @@ to give you a sense of the package.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/DSKkoyx9Rcy"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/DSKkoyx9Rcy"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,11 +54,10 @@ to give you a sense of the package.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="nx">s</span> <span class="s">&#34;strings&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">s</span> <span class="s">&#34;strings&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -71,9 +69,7 @@ it a lot below.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">p</span> <span class="p">=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span></span></span></code></pre>
<span class="kd">var</span> <span class="nx">p</span> <span class="p">=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span>
</pre>
</td> </td>
</tr> </tr>
@ -83,8 +79,7 @@ it a lot below.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -101,21 +96,19 @@ package docs.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;Contains: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Contains</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;es&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;Contains: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Contains</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;es&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;Count: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Count</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;t&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;Count: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Count</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;t&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;HasPrefix: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">HasPrefix</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;te&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;HasPrefix: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">HasPrefix</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;te&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;HasSuffix: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">HasSuffix</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;st&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;HasSuffix: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">HasSuffix</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;st&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;Index: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Index</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;e&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;Index: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Index</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">,</span> <span class="s">&#34;e&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;Join: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Join</span><span class="p">([]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">},</span> <span class="s">&#34;-&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;Join: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Join</span><span class="p">([]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="s">&#34;b&#34;</span><span class="p">},</span> <span class="s">&#34;-&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;Repeat: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Repeat</span><span class="p">(</span><span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;Repeat: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Repeat</span><span class="p">(</span><span class="s">&#34;a&#34;</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;Replace: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span><span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;o&#34;</span><span class="p">,</span> <span class="s">&#34;0&#34;</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;Replace: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span><span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;o&#34;</span><span class="p">,</span> <span class="s">&#34;0&#34;</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;Replace: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span><span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;o&#34;</span><span class="p">,</span> <span class="s">&#34;0&#34;</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;Replace: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span><span class="s">&#34;foo&#34;</span><span class="p">,</span> <span class="s">&#34;o&#34;</span><span class="p">,</span> <span class="s">&#34;0&#34;</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;Split: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Split</span><span class="p">(</span><span class="s">&#34;a-b-c-d-e&#34;</span><span class="p">,</span> <span class="s">&#34;-&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;Split: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">Split</span><span class="p">(</span><span class="s">&#34;a-b-c-d-e&#34;</span><span class="p">,</span> <span class="s">&#34;-&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;ToLower: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">ToLower</span><span class="p">(</span><span class="s">&#34;TEST&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;ToLower: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">ToLower</span><span class="p">(</span><span class="s">&#34;TEST&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">&#34;ToUpper: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">ToUpper</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="s">&#34;ToUpper: &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">.</span><span class="nf">ToUpper</span><span class="p">(</span><span class="s">&#34;test&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -129,19 +122,19 @@ package docs.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run string-functions.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run string-functions.go
<span class="go">Contains: true </span></span><span class="line"><span class="cl"><span class="go">Contains: true
</span><span class="go">Count: 2 </span></span></span><span class="line"><span class="cl"><span class="go">Count: 2
</span><span class="go">HasPrefix: true </span></span></span><span class="line"><span class="cl"><span class="go">HasPrefix: true
</span><span class="go">HasSuffix: true </span></span></span><span class="line"><span class="cl"><span class="go">HasSuffix: true
</span><span class="go">Index: 1 </span></span></span><span class="line"><span class="cl"><span class="go">Index: 1
</span><span class="go">Join: a-b </span></span></span><span class="line"><span class="cl"><span class="go">Join: a-b
</span><span class="go">Repeat: aaaaa </span></span></span><span class="line"><span class="cl"><span class="go">Repeat: aaaaa
</span><span class="go">Replace: f00 </span></span></span><span class="line"><span class="cl"><span class="go">Replace: f00
</span><span class="go">Replace: f0o </span></span></span><span class="line"><span class="cl"><span class="go">Replace: f0o
</span><span class="go">Split: [a b c d e] </span></span></span><span class="line"><span class="cl"><span class="go">Split: [a b c d e]
</span><span class="go">ToLower: test </span></span></span><span class="line"><span class="cl"><span class="go">ToLower: test
</span><span class="go">ToUpper: TEST</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">ToUpper: TEST</span></span></span></code></pre>
</td> </td>
</tr> </tr>

120
public/strings-and-runes generated
View File

@ -49,8 +49,7 @@ introduction to the topic.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/39BpTLf6BAz"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/39BpTLf6BAz"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -60,11 +59,10 @@ introduction to the topic.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;unicode/utf8&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;unicode/utf8&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -74,8 +72,7 @@ introduction to the topic.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -89,9 +86,7 @@ encoded text.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">const</span> <span class="nx">s</span> <span class="p">=</span> <span class="s">&#34;สวัสดี&#34;</span></span></span></code></pre>
<span class="kd">const</span> <span class="nx">s</span> <span class="p">=</span> <span class="s">&#34;สวัสดี&#34;</span>
</pre>
</td> </td>
</tr> </tr>
@ -103,9 +98,7 @@ will produce the length of the raw bytes stored within.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Len:&#34;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -118,12 +111,10 @@ the bytes that constitute the code points in <code>s</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">);</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">);</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%x &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%x &#34;</span><span class="p">,</span> <span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -139,9 +130,7 @@ code points, so the result of this count may be surprising.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Rune count:&#34;</span><span class="p">,</span> <span class="nx">utf8</span><span class="p">.</span><span class="nf">RuneCountInString</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Rune count:&#34;</span><span class="p">,</span> <span class="nx">utf8</span><span class="p">.</span><span class="nf">RuneCountInString</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -153,11 +142,9 @@ each <code>rune</code> along with its offset in the string.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">idx</span><span class="p">,</span> <span class="nx">runeValue</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">s</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">idx</span><span class="p">,</span> <span class="nx">runeValue</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">s</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%#U starts at %d\n&#34;</span><span class="p">,</span> <span class="nx">runeValue</span><span class="p">,</span> <span class="nx">idx</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%#U starts at %d\n&#34;</span><span class="p">,</span> <span class="nx">runeValue</span><span class="p">,</span> <span class="nx">idx</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -169,13 +156,11 @@ each <code>rune</code> along with its offset in the string.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;\nUsing DecodeRuneInString&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;\nUsing DecodeRuneInString&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">w</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">);</span> <span class="nx">i</span> <span class="o">+=</span> <span class="nx">w</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">w</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">);</span> <span class="nx">i</span> <span class="o">+=</span> <span class="nx">w</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">runeValue</span><span class="p">,</span> <span class="nx">width</span> <span class="o">:=</span> <span class="nx">utf8</span><span class="p">.</span><span class="nf">DecodeRuneInString</span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">:])</span>
<span class="nx">runeValue</span><span class="p">,</span> <span class="nx">width</span> <span class="o">:=</span> <span class="nx">utf8</span><span class="p">.</span><span class="nf">DecodeRuneInString</span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">:])</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%#U starts at %d\n&#34;</span><span class="p">,</span> <span class="nx">runeValue</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%#U starts at %d\n&#34;</span><span class="p">,</span> <span class="nx">runeValue</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">w</span> <span class="p">=</span> <span class="nx">width</span></span></span></code></pre>
<span class="nx">w</span> <span class="p">=</span> <span class="nx">width</span>
</pre>
</td> </td>
</tr> </tr>
@ -186,11 +171,9 @@ each <code>rune</code> along with its offset in the string.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">examineRune</span><span class="p">(</span><span class="nx">runeValue</span><span class="p">)</span>
<span class="nf">examineRune</span><span class="p">(</span><span class="nx">runeValue</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -200,8 +183,7 @@ each <code>rune</code> along with its offset in the string.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">examineRune</span><span class="p">(</span><span class="nx">r</span> <span class="kt">rune</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">examineRune</span><span class="p">(</span><span class="nx">r</span> <span class="kt">rune</span><span class="p">)</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -213,14 +195,12 @@ can compare a <code>rune</code> value to a rune literal directly.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">r</span> <span class="o">==</span> <span class="sc">&#39;t&#39;</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">r</span> <span class="o">==</span> <span class="sc">&#39;t&#39;</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;found tee&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;found tee&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="nx">r</span> <span class="o">==</span> <span class="sc">&#39;ส&#39;</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="nx">r</span> <span class="o">==</span> <span class="sc">&#39;ส&#39;</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;found so sua&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;found so sua&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -234,16 +214,16 @@ can compare a <code>rune</code> value to a rune literal directly.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run strings-and-runes.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run strings-and-runes.go
<span class="go">Len: 18 </span></span><span class="line"><span class="cl"><span class="go">Len: 18
</span><span class="go">e0 b8 aa e0 b8 a7 e0 b8 b1 e0 b8 aa e0 b8 94 e0 b8 b5 </span></span></span><span class="line"><span class="cl"><span class="go">e0 b8 aa e0 b8 a7 e0 b8 b1 e0 b8 aa e0 b8 94 e0 b8 b5
</span><span class="go">Rune count: 6 </span></span></span><span class="line"><span class="cl"><span class="go">Rune count: 6
</span><span class="go">U+0E2A &#39;ส&#39; starts at 0 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E2A &#39;ส&#39; starts at 0
</span><span class="go">U+0E27 &#39;ว&#39; starts at 3 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E27 &#39;ว&#39; starts at 3
</span><span class="go">U+0E31 &#39;ั&#39; starts at 6 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E31 &#39;ั&#39; starts at 6
</span><span class="go">U+0E2A &#39;ส&#39; starts at 9 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E2A &#39;ส&#39; starts at 9
</span><span class="go">U+0E14 &#39;ด&#39; starts at 12 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E14 &#39;ด&#39; starts at 12
</span><span class="go">U+0E35 &#39;ี&#39; starts at 15</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">U+0E35 &#39;ี&#39; starts at 15</span></span></span></code></pre>
</td> </td>
</tr> </tr>
@ -253,15 +233,15 @@ can compare a <code>rune</code> value to a rune literal directly.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="go">Using DecodeRuneInString <pre class="chroma"><code><span class="line"><span class="cl"><span class="go">Using DecodeRuneInString
</span><span class="go">U+0E2A &#39;ส&#39; starts at 0 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E2A &#39;ส&#39; starts at 0
</span><span class="go">found so sua </span></span></span><span class="line"><span class="cl"><span class="go">found so sua
</span><span class="go">U+0E27 &#39;ว&#39; starts at 3 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E27 &#39;ว&#39; starts at 3
</span><span class="go">U+0E31 &#39;ั&#39; starts at 6 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E31 &#39;ั&#39; starts at 6
</span><span class="go">U+0E2A &#39;ส&#39; starts at 9 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E2A &#39;ส&#39; starts at 9
</span><span class="go">found so sua </span></span></span><span class="line"><span class="cl"><span class="go">found so sua
</span><span class="go">U+0E14 &#39;ด&#39; starts at 12 </span></span></span><span class="line"><span class="cl"><span class="go">U+0E14 &#39;ด&#39; starts at 12
</span><span class="go">U+0E35 &#39;ี&#39; starts at 15</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">U+0E35 &#39;ี&#39; starts at 15</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -46,8 +46,7 @@ files and folders into the application binary.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/-LOu1L0i2tR"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/-LOu1L0i2tR"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -57,8 +56,7 @@ files and folders into the application binary.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -68,10 +66,9 @@ files and folders into the application binary.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">type</span> <span class="nx">base</span> <span class="kd">struct</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">base</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="nx">num</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">num</span> <span class="kt">int</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -81,10 +78,9 @@ files and folders into the application binary.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="p">(</span><span class="nx">b</span> <span class="nx">base</span><span class="p">)</span> <span class="nf">describe</span><span class="p">()</span> <span class="kt">string</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">b</span> <span class="nx">base</span><span class="p">)</span> <span class="nf">describe</span><span class="p">()</span> <span class="kt">string</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;base with num=%v&#34;</span><span class="p">,</span> <span class="nx">b</span><span class="p">.</span><span class="nx">num</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;base with num=%v&#34;</span><span class="p">,</span> <span class="nx">b</span><span class="p">.</span><span class="nx">num</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -96,12 +92,10 @@ like a field without a name.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">container</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">container</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">base</span>
<span class="nx">base</span> </span></span><span class="line"><span class="cl"> <span class="nx">str</span> <span class="kt">string</span>
<span class="nx">str</span> <span class="kt">string</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -111,8 +105,7 @@ like a field without a name.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -125,14 +118,12 @@ embedded type serves as the field name.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">co</span> <span class="o">:=</span> <span class="nx">container</span><span class="p">{</span>
<span class="nx">co</span> <span class="o">:=</span> <span class="nx">container</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">base</span><span class="p">:</span> <span class="nx">base</span><span class="p">{</span>
<span class="nx">base</span><span class="p">:</span> <span class="nx">base</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">num</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nx">num</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span>
<span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nx">str</span><span class="p">:</span> <span class="s">&#34;some name&#34;</span><span class="p">,</span>
<span class="nx">str</span><span class="p">:</span> <span class="s">&#34;some name&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -144,9 +135,7 @@ e.g. <code>co.num</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;co={num: %v, str: %v}\n&#34;</span><span class="p">,</span> <span class="nx">co</span><span class="p">.</span><span class="nx">num</span><span class="p">,</span> <span class="nx">co</span><span class="p">.</span><span class="nx">str</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;co={num: %v, str: %v}\n&#34;</span><span class="p">,</span> <span class="nx">co</span><span class="p">.</span><span class="nx">num</span><span class="p">,</span> <span class="nx">co</span><span class="p">.</span><span class="nx">str</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -158,9 +147,7 @@ the embedded type name.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;also num:&#34;</span><span class="p">,</span> <span class="nx">co</span><span class="p">.</span><span class="nx">base</span><span class="p">.</span><span class="nx">num</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;also num:&#34;</span><span class="p">,</span> <span class="nx">co</span><span class="p">.</span><span class="nx">base</span><span class="p">.</span><span class="nx">num</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -174,9 +161,7 @@ directly on <code>co</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;describe:&#34;</span><span class="p">,</span> <span class="nx">co</span><span class="p">.</span><span class="nf">describe</span><span class="p">())</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;describe:&#34;</span><span class="p">,</span> <span class="nx">co</span><span class="p">.</span><span class="nf">describe</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -186,10 +171,9 @@ directly on <code>co</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="kd">type</span> <span class="nx">describer</span> <span class="kd">interface</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">type</span> <span class="nx">describer</span> <span class="kd">interface</span> <span class="p">{</span>
<span class="nf">describe</span><span class="p">()</span> <span class="kt">string</span> </span></span><span class="line"><span class="cl"> <span class="nf">describe</span><span class="p">()</span> <span class="kt">string</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -203,11 +187,9 @@ we see that a <code>container</code> now implements the
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">d</span> <span class="nx">describer</span> <span class="p">=</span> <span class="nx">co</span>
<span class="kd">var</span> <span class="nx">d</span> <span class="nx">describer</span> <span class="p">=</span> <span class="nx">co</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;describer:&#34;</span><span class="p">,</span> <span class="nx">d</span><span class="p">.</span><span class="nf">describe</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;describer:&#34;</span><span class="p">,</span> <span class="nx">d</span><span class="p">.</span><span class="nf">describe</span><span class="p">())</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -221,11 +203,11 @@ we see that a <code>container</code> now implements the
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run struct-embedding.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run struct-embedding.go
<span class="go">co={num: 1, str: some name} </span></span><span class="line"><span class="cl"><span class="go">co={num: 1, str: some name}
</span><span class="go">also num: 1 </span></span></span><span class="line"><span class="cl"><span class="go">also num: 1
</span><span class="go">describe: base with num=1 </span></span></span><span class="line"><span class="cl"><span class="go">describe: base with num=1
</span><span class="go">describer: base with num=1</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">describer: base with num=1</span></span></span></code></pre>
</td> </td>
</tr> </tr>

111
public/structs generated
View File

@ -44,8 +44,7 @@ records.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/ex1J3oieEeo"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/ex1J3oieEeo"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,8 +54,7 @@ records.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -67,12 +65,10 @@ records.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">person</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">person</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">name</span> <span class="kt">string</span>
<span class="nx">name</span> <span class="kt">string</span> </span></span><span class="line"><span class="cl"> <span class="nx">age</span> <span class="kt">int</span>
<span class="nx">age</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -83,9 +79,7 @@ records.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">newPerson</span><span class="p">(</span><span class="nx">name</span> <span class="kt">string</span><span class="p">)</span> <span class="o">*</span><span class="nx">person</span> <span class="p">{</span></span></span></code></pre>
<span class="kd">func</span> <span class="nf">newPerson</span><span class="p">(</span><span class="nx">name</span> <span class="kt">string</span><span class="p">)</span> <span class="o">*</span><span class="nx">person</span> <span class="p">{</span>
</pre>
</td> </td>
</tr> </tr>
@ -97,12 +91,10 @@ as a local variable will survive the scope of the function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">p</span> <span class="o">:=</span> <span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="nx">name</span><span class="p">}</span>
<span class="nx">p</span> <span class="o">:=</span> <span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="nx">name</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">p</span><span class="p">.</span><span class="nx">age</span> <span class="p">=</span> <span class="mi">42</span>
<span class="nx">p</span><span class="p">.</span><span class="nx">age</span> <span class="p">=</span> <span class="mi">42</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="o">&amp;</span><span class="nx">p</span>
<span class="k">return</span> <span class="o">&amp;</span><span class="nx">p</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -112,8 +104,7 @@ as a local variable will survive the scope of the function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -124,9 +115,7 @@ as a local variable will survive the scope of the function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">person</span><span class="p">{</span><span class="s">&#34;Bob&#34;</span><span class="p">,</span> <span class="mi">20</span><span class="p">})</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">person</span><span class="p">{</span><span class="s">&#34;Bob&#34;</span><span class="p">,</span> <span class="mi">20</span><span class="p">})</span>
</pre>
</td> </td>
</tr> </tr>
@ -137,9 +126,7 @@ as a local variable will survive the scope of the function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">&#34;Alice&#34;</span><span class="p">,</span> <span class="nx">age</span><span class="p">:</span> <span class="mi">30</span><span class="p">})</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">&#34;Alice&#34;</span><span class="p">,</span> <span class="nx">age</span><span class="p">:</span> <span class="mi">30</span><span class="p">})</span>
</pre>
</td> </td>
</tr> </tr>
@ -150,9 +137,7 @@ as a local variable will survive the scope of the function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">&#34;Fred&#34;</span><span class="p">})</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">&#34;Fred&#34;</span><span class="p">})</span>
</pre>
</td> </td>
</tr> </tr>
@ -163,9 +148,7 @@ as a local variable will survive the scope of the function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">&#34;Ann&#34;</span><span class="p">,</span> <span class="nx">age</span><span class="p">:</span> <span class="mi">40</span><span class="p">})</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">&#34;Ann&#34;</span><span class="p">,</span> <span class="nx">age</span><span class="p">:</span> <span class="mi">40</span><span class="p">})</span>
</pre>
</td> </td>
</tr> </tr>
@ -176,9 +159,7 @@ as a local variable will survive the scope of the function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">newPerson</span><span class="p">(</span><span class="s">&#34;Jon&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nf">newPerson</span><span class="p">(</span><span class="s">&#34;Jon&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -189,10 +170,8 @@ as a local variable will survive the scope of the function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span> <span class="o">:=</span> <span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">&#34;Sean&#34;</span><span class="p">,</span> <span class="nx">age</span><span class="p">:</span> <span class="mi">50</span><span class="p">}</span>
<span class="nx">s</span> <span class="o">:=</span> <span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">&#34;Sean&#34;</span><span class="p">,</span> <span class="nx">age</span><span class="p">:</span> <span class="mi">50</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">s</span><span class="p">.</span><span class="nx">name</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">s</span><span class="p">.</span><span class="nx">name</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -204,10 +183,8 @@ pointers are automatically dereferenced.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">sp</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">s</span>
<span class="nx">sp</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">s</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">sp</span><span class="p">.</span><span class="nx">age</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">sp</span><span class="p">.</span><span class="nx">age</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -218,10 +195,8 @@ pointers are automatically dereferenced.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">sp</span><span class="p">.</span><span class="nx">age</span> <span class="p">=</span> <span class="mi">51</span>
<span class="nx">sp</span><span class="p">.</span><span class="nx">age</span> <span class="p">=</span> <span class="mi">51</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">sp</span><span class="p">.</span><span class="nx">age</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">sp</span><span class="p">.</span><span class="nx">age</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -235,17 +210,15 @@ struct type. This technique is commonly used for
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">dog</span> <span class="o">:=</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="nx">dog</span> <span class="o">:=</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">name</span> <span class="kt">string</span>
<span class="nx">name</span> <span class="kt">string</span> </span></span><span class="line"><span class="cl"> <span class="nx">isGood</span> <span class="kt">bool</span>
<span class="nx">isGood</span> <span class="kt">bool</span> </span></span><span class="line"><span class="cl"> <span class="p">}{</span>
<span class="p">}{</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;Rex&#34;</span><span class="p">,</span>
<span class="s">&#34;Rex&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="kc">true</span><span class="p">,</span>
<span class="kc">true</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">dog</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">dog</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -259,16 +232,16 @@ struct type. This technique is commonly used for
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run structs.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run structs.go
<span class="go">{Bob 20} </span></span><span class="line"><span class="cl"><span class="go">{Bob 20}
</span><span class="go">{Alice 30} </span></span></span><span class="line"><span class="cl"><span class="go">{Alice 30}
</span><span class="go">{Fred 0} </span></span></span><span class="line"><span class="cl"><span class="go">{Fred 0}
</span><span class="go">&amp;{Ann 40} </span></span></span><span class="line"><span class="cl"><span class="go">&amp;{Ann 40}
</span><span class="go">&amp;{Jon 42} </span></span></span><span class="line"><span class="cl"><span class="go">&amp;{Jon 42}
</span><span class="go">Sean </span></span></span><span class="line"><span class="cl"><span class="go">Sean
</span><span class="go">50 </span></span></span><span class="line"><span class="cl"><span class="go">50
</span><span class="go">51 </span></span></span><span class="line"><span class="cl"><span class="go">51
</span><span class="go">{Rex true}</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">{Rex true}</span></span></span></code></pre>
</td> </td>
</tr> </tr>

111
public/switch generated
View File

@ -43,8 +43,7 @@ branches.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/qVDqWoUQ6AI"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/qVDqWoUQ6AI"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,11 +53,10 @@ branches.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -68,8 +66,7 @@ branches.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -80,18 +77,16 @@ branches.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">2</span>
<span class="nx">i</span> <span class="o">:=</span> <span class="mi">2</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="s">&#34;Write &#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="s">&#34; as &#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="s">&#34;Write &#34;</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="s">&#34; as &#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">switch</span> <span class="nx">i</span> <span class="p">{</span>
<span class="k">switch</span> <span class="nx">i</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="mi">1</span><span class="p">:</span>
<span class="k">case</span> <span class="mi">1</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;one&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;one&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="mi">2</span><span class="p">:</span>
<span class="k">case</span> <span class="mi">2</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;two&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;two&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="mi">3</span><span class="p">:</span>
<span class="k">case</span> <span class="mi">3</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;three&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;three&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -104,14 +99,12 @@ in the same <code>case</code> statement. We use the optional
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">switch</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">().</span><span class="nf">Weekday</span><span class="p">()</span> <span class="p">{</span>
<span class="k">switch</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">().</span><span class="nf">Weekday</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Saturday</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Sunday</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Saturday</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Sunday</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;It&#39;s the weekend&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;It&#39;s the weekend&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">default</span><span class="p">:</span>
<span class="k">default</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;It&#39;s a weekday&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;It&#39;s a weekday&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -124,15 +117,13 @@ to express if/else logic. Here we also show how the
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span>
<span class="nx">t</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">switch</span> <span class="p">{</span>
<span class="k">switch</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Hour</span><span class="p">()</span> <span class="p">&lt;</span> <span class="mi">12</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Hour</span><span class="p">()</span> <span class="p">&lt;</span> <span class="mi">12</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;It&#39;s before noon&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;It&#39;s before noon&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">default</span><span class="p">:</span>
<span class="k">default</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;It&#39;s after noon&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;It&#39;s after noon&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -146,22 +137,20 @@ type corresponding to its clause.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">whatAmI</span> <span class="o">:=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">i</span> <span class="kd">interface</span><span class="p">{})</span> <span class="p">{</span>
<span class="nx">whatAmI</span> <span class="o">:=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">i</span> <span class="kd">interface</span><span class="p">{})</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">switch</span> <span class="nx">t</span> <span class="o">:=</span> <span class="nx">i</span><span class="p">.(</span><span class="kd">type</span><span class="p">)</span> <span class="p">{</span>
<span class="k">switch</span> <span class="nx">t</span> <span class="o">:=</span> <span class="nx">i</span><span class="p">.(</span><span class="kd">type</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="kt">bool</span><span class="p">:</span>
<span class="k">case</span> <span class="kt">bool</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;I&#39;m a bool&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;I&#39;m a bool&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="kt">int</span><span class="p">:</span>
<span class="k">case</span> <span class="kt">int</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;I&#39;m an int&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;I&#39;m an int&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">default</span><span class="p">:</span>
<span class="k">default</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;Don&#39;t know type %T\n&#34;</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;Don&#39;t know type %T\n&#34;</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nf">whatAmI</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span>
<span class="nf">whatAmI</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">whatAmI</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="nf">whatAmI</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">whatAmI</span><span class="p">(</span><span class="s">&#34;hey&#34;</span><span class="p">)</span>
<span class="nf">whatAmI</span><span class="p">(</span><span class="s">&#34;hey&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -175,13 +164,13 @@ type corresponding to its clause.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run switch.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run switch.go
<span class="go">Write 2 as two </span></span><span class="line"><span class="cl"><span class="go">Write 2 as two
</span><span class="go">It&#39;s a weekday </span></span></span><span class="line"><span class="cl"><span class="go">It&#39;s a weekday
</span><span class="go">It&#39;s after noon </span></span></span><span class="line"><span class="cl"><span class="go">It&#39;s after noon
</span><span class="go">I&#39;m a bool </span></span></span><span class="line"><span class="cl"><span class="go">I&#39;m a bool
</span><span class="go">I&#39;m an int </span></span></span><span class="line"><span class="cl"><span class="go">I&#39;m an int
</span><span class="go">Don&#39;t know type string</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">Don&#39;t know type string</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -46,8 +46,7 @@ time.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/hVcPg9RH3_V"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/hVcPg9RH3_V"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -57,12 +56,11 @@ time.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="s">&#34;path/filepath&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;path/filepath&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -72,12 +70,11 @@ time.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">check</span><span class="p">(</span><span class="nx">e</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">check</span><span class="p">(</span><span class="nx">e</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -87,8 +84,7 @@ time.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -103,10 +99,8 @@ create the file in the default location for our OS.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">f</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">CreateTemp</span><span class="p">(</span><span class="s">&#34;&#34;</span><span class="p">,</span> <span class="s">&#34;sample&#34;</span><span class="p">)</span>
<span class="nx">f</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">CreateTemp</span><span class="p">(</span><span class="s">&#34;&#34;</span><span class="p">,</span> <span class="s">&#34;sample&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -122,9 +116,7 @@ calls will always create different file names.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Temp file name:&#34;</span><span class="p">,</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Name</span><span class="p">())</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Temp file name:&#34;</span><span class="p">,</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Name</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -138,9 +130,7 @@ explicitly.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Remove</span><span class="p">(</span><span class="nx">f</span><span class="p">.</span><span class="nf">Name</span><span class="p">())</span></span></span></code></pre>
<span class="k">defer</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Remove</span><span class="p">(</span><span class="nx">f</span><span class="p">.</span><span class="nf">Name</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -151,10 +141,8 @@ explicitly.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Write</span><span class="p">([]</span><span class="kt">byte</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">})</span>
<span class="nx">_</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Write</span><span class="p">([]</span><span class="kt">byte</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">})</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -169,11 +157,9 @@ rather than an open file.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">dname</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">MkdirTemp</span><span class="p">(</span><span class="s">&#34;&#34;</span><span class="p">,</span> <span class="s">&#34;sampledir&#34;</span><span class="p">)</span>
<span class="nx">dname</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">MkdirTemp</span><span class="p">(</span><span class="s">&#34;&#34;</span><span class="p">,</span> <span class="s">&#34;sampledir&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Temp dir name:&#34;</span><span class="p">,</span> <span class="nx">dname</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Temp dir name:&#34;</span><span class="p">,</span> <span class="nx">dname</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -183,8 +169,7 @@ rather than an open file.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="k">defer</span> <span class="nx">os</span><span class="p">.</span><span class="nf">RemoveAll</span><span class="p">(</span><span class="nx">dname</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nx">os</span><span class="p">.</span><span class="nf">RemoveAll</span><span class="p">(</span><span class="nx">dname</span><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -196,12 +181,10 @@ prefixing them with our temporary directory.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fname</span> <span class="o">:=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="nx">dname</span><span class="p">,</span> <span class="s">&#34;file1&#34;</span><span class="p">)</span>
<span class="nx">fname</span> <span class="o">:=</span> <span class="nx">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="nx">dname</span><span class="p">,</span> <span class="s">&#34;file1&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">WriteFile</span><span class="p">(</span><span class="nx">fname</span><span class="p">,</span> <span class="p">[]</span><span class="kt">byte</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">},</span> <span class="mo">0666</span><span class="p">)</span>
<span class="nx">err</span> <span class="p">=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">WriteFile</span><span class="p">(</span><span class="nx">fname</span><span class="p">,</span> <span class="p">[]</span><span class="kt">byte</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">},</span> <span class="mo">0666</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -215,9 +198,9 @@ prefixing them with our temporary directory.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run temporary-files-and-directories.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run temporary-files-and-directories.go
<span class="go">Temp file name: /tmp/sample610887201 </span></span><span class="line"><span class="cl"><span class="go">Temp file name: /tmp/sample610887201
</span><span class="go">Temp dir name: /tmp/sampledir898854668</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">Temp dir name: /tmp/sampledir898854668</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -48,9 +48,7 @@ typically lives in the same package as the code it tests.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/PlzU16wwEWE"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/PlzU16wwEWE"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
<span class="kn">package</span> <span class="nx">main</span>
</pre>
</td> </td>
</tr> </tr>
@ -60,11 +58,10 @@ typically lives in the same package as the code it tests.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;testing&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;testing&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -79,14 +76,12 @@ be named <code>intutils_test.go</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">IntMin</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">IntMin</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">a</span> <span class="p">&lt;</span> <span class="nx">b</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">a</span> <span class="p">&lt;</span> <span class="nx">b</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">a</span>
<span class="k">return</span> <span class="nx">a</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">b</span>
<span class="k">return</span> <span class="nx">b</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -98,11 +93,9 @@ beginning with <code>Test</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">TestIntMinBasic</span><span class="p">(</span><span class="nx">t</span> <span class="o">*</span><span class="nx">testing</span><span class="p">.</span><span class="nx">T</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">TestIntMinBasic</span><span class="p">(</span><span class="nx">t</span> <span class="o">*</span><span class="nx">testing</span><span class="p">.</span><span class="nx">T</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">ans</span> <span class="o">:=</span> <span class="nf">IntMin</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">)</span>
<span class="nx">ans</span> <span class="o">:=</span> <span class="nf">IntMin</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">ans</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">2</span> <span class="p">{</span></span></span></code></pre>
<span class="k">if</span> <span class="nx">ans</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">2</span> <span class="p">{</span>
</pre>
</td> </td>
</tr> </tr>
@ -115,11 +108,9 @@ failures and stop the test immediately.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t</span><span class="p">.</span><span class="nf">Errorf</span><span class="p">(</span><span class="s">&#34;IntMin(2, -2) = %d; want -2&#34;</span><span class="p">,</span> <span class="nx">ans</span><span class="p">)</span>
<span class="nx">t</span><span class="p">.</span><span class="nf">Errorf</span><span class="p">(</span><span class="s">&#34;IntMin(2, -2) = %d; want -2&#34;</span><span class="p">,</span> <span class="nx">ans</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -133,19 +124,17 @@ walks over them and performs the test logic.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">TestIntMinTableDriven</span><span class="p">(</span><span class="nx">t</span> <span class="o">*</span><span class="nx">testing</span><span class="p">.</span><span class="nx">T</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">TestIntMinTableDriven</span><span class="p">(</span><span class="nx">t</span> <span class="o">*</span><span class="nx">testing</span><span class="p">.</span><span class="nx">T</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">tests</span> <span class="p">=</span> <span class="p">[]</span><span class="kd">struct</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">tests</span> <span class="p">=</span> <span class="p">[]</span><span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">a</span><span class="p">,</span> <span class="nx">b</span> <span class="kt">int</span>
<span class="nx">a</span><span class="p">,</span> <span class="nx">b</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">want</span> <span class="kt">int</span>
<span class="nx">want</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="p">}{</span>
<span class="p">}{</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">},</span>
<span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">},</span>
<span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">},</span>
<span class="p">{</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">},</span>
<span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">},</span>
<span class="p">{</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -158,8 +147,7 @@ when executing <code>go test -v</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">tt</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">tests</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">tt</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">tests</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -169,16 +157,15 @@ when executing <code>go test -v</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">testname</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;%d,%d&#34;</span><span class="p">,</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">a</span><span class="p">,</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">b</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">testname</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;%d,%d&#34;</span><span class="p">,</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">a</span><span class="p">,</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">b</span><span class="p">)</span>
<span class="nx">t</span><span class="p">.</span><span class="nf">Run</span><span class="p">(</span><span class="nx">testname</span><span class="p">,</span> <span class="kd">func</span><span class="p">(</span><span class="nx">t</span> <span class="o">*</span><span class="nx">testing</span><span class="p">.</span><span class="nx">T</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">t</span><span class="p">.</span><span class="nf">Run</span><span class="p">(</span><span class="nx">testname</span><span class="p">,</span> <span class="kd">func</span><span class="p">(</span><span class="nx">t</span> <span class="o">*</span><span class="nx">testing</span><span class="p">.</span><span class="nx">T</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">ans</span> <span class="o">:=</span> <span class="nf">IntMin</span><span class="p">(</span><span class="nx">tt</span><span class="p">.</span><span class="nx">a</span><span class="p">,</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">b</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">ans</span> <span class="o">:=</span> <span class="nf">IntMin</span><span class="p">(</span><span class="nx">tt</span><span class="p">.</span><span class="nx">a</span><span class="p">,</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">b</span><span class="p">)</span>
<span class="k">if</span> <span class="nx">ans</span> <span class="o">!=</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">want</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">ans</span> <span class="o">!=</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">want</span> <span class="p">{</span>
<span class="nx">t</span><span class="p">.</span><span class="nf">Errorf</span><span class="p">(</span><span class="s">&#34;got %d, want %d&#34;</span><span class="p">,</span> <span class="nx">ans</span><span class="p">,</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">want</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">t</span><span class="p">.</span><span class="nf">Errorf</span><span class="p">(</span><span class="s">&#34;got %d, want %d&#34;</span><span class="p">,</span> <span class="nx">ans</span><span class="p">,</span> <span class="nx">tt</span><span class="p">.</span><span class="nx">want</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">})</span> </span></span><span class="line"><span class="cl"> <span class="p">})</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -192,9 +179,7 @@ executes each benchmark function several times, increasing
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">BenchmarkIntMin</span><span class="p">(</span><span class="nx">b</span> <span class="o">*</span><span class="nx">testing</span><span class="p">.</span><span class="nx">B</span><span class="p">)</span> <span class="p">{</span></span></span></code></pre>
<span class="kd">func</span> <span class="nf">BenchmarkIntMin</span><span class="p">(</span><span class="nx">b</span> <span class="o">*</span><span class="nx">testing</span><span class="p">.</span><span class="nx">B</span><span class="p">)</span> <span class="p">{</span>
</pre>
</td> </td>
</tr> </tr>
@ -206,12 +191,10 @@ benchmarking in a loop <code>b.N</code> times.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="nx">b</span><span class="p">.</span><span class="nx">N</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="nx">b</span><span class="p">.</span><span class="nx">N</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nf">IntMin</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="nf">IntMin</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -226,24 +209,23 @@ benchmarking in a loop <code>b.N</code> times.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go test -v
<span class="gp">$</span> go test -v </span></span><span class="line"><span class="cl"><span class="go">== RUN TestIntMinBasic
<span class="go">== RUN TestIntMinBasic </span></span></span><span class="line"><span class="cl"><span class="go">--- PASS: TestIntMinBasic (0.00s)
</span><span class="go">--- PASS: TestIntMinBasic (0.00s) </span></span></span><span class="line"><span class="cl"><span class="go">=== RUN TestIntMinTableDriven
</span><span class="go">=== RUN TestIntMinTableDriven </span></span></span><span class="line"><span class="cl"><span class="go">=== RUN TestIntMinTableDriven/0,1
</span><span class="go">=== RUN TestIntMinTableDriven/0,1 </span></span></span><span class="line"><span class="cl"><span class="go">=== RUN TestIntMinTableDriven/1,0
</span><span class="go">=== RUN TestIntMinTableDriven/1,0 </span></span></span><span class="line"><span class="cl"><span class="go">=== RUN TestIntMinTableDriven/2,-2
</span><span class="go">=== RUN TestIntMinTableDriven/2,-2 </span></span></span><span class="line"><span class="cl"><span class="go">=== RUN TestIntMinTableDriven/0,-1
</span><span class="go">=== RUN TestIntMinTableDriven/0,-1 </span></span></span><span class="line"><span class="cl"><span class="go">=== RUN TestIntMinTableDriven/-1,0
</span><span class="go">=== RUN TestIntMinTableDriven/-1,0 </span></span></span><span class="line"><span class="cl"><span class="go">--- PASS: TestIntMinTableDriven (0.00s)
</span><span class="go">--- PASS: TestIntMinTableDriven (0.00s) </span></span></span><span class="line"><span class="cl"><span class="go"> --- PASS: TestIntMinTableDriven/0,1 (0.00s)
</span><span class="go"> --- PASS: TestIntMinTableDriven/0,1 (0.00s) </span></span></span><span class="line"><span class="cl"><span class="go"> --- PASS: TestIntMinTableDriven/1,0 (0.00s)
</span><span class="go"> --- PASS: TestIntMinTableDriven/1,0 (0.00s) </span></span></span><span class="line"><span class="cl"><span class="go"> --- PASS: TestIntMinTableDriven/2,-2 (0.00s)
</span><span class="go"> --- PASS: TestIntMinTableDriven/2,-2 (0.00s) </span></span></span><span class="line"><span class="cl"><span class="go"> --- PASS: TestIntMinTableDriven/0,-1 (0.00s)
</span><span class="go"> --- PASS: TestIntMinTableDriven/0,-1 (0.00s) </span></span></span><span class="line"><span class="cl"><span class="go"> --- PASS: TestIntMinTableDriven/-1,0 (0.00s)
</span><span class="go"> --- PASS: TestIntMinTableDriven/-1,0 (0.00s) </span></span></span><span class="line"><span class="cl"><span class="go">PASS
</span><span class="go">PASS </span></span></span><span class="line"><span class="cl"><span class="go">ok examples/testing-and-benchmarking 0.023s</span></span></span></code></pre>
</span><span class="go">ok examples/testing-and-benchmarking 0.023s</span></pre>
</td> </td>
</tr> </tr>
@ -256,14 +238,13 @@ benchmark function names with a regexp.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go test -bench=.
<span class="gp">$</span> go test -bench=. </span></span><span class="line"><span class="cl"><span class="go">goos: darwin
<span class="go">goos: darwin </span></span></span><span class="line"><span class="cl"><span class="go">goarch: arm64
</span><span class="go">goarch: arm64 </span></span></span><span class="line"><span class="cl"><span class="go">pkg: examples/testing
</span><span class="go">pkg: examples/testing </span></span></span><span class="line"><span class="cl"><span class="go">BenchmarkIntMin-8 1000000000 0.3136 ns/op
</span><span class="go">BenchmarkIntMin-8 1000000000 0.3136 ns/op </span></span></span><span class="line"><span class="cl"><span class="go">PASS
</span><span class="go">PASS </span></span></span><span class="line"><span class="cl"><span class="go">ok examples/testing-and-benchmarking 0.351s</span></span></span></code></pre>
</span><span class="go">ok examples/testing-and-benchmarking 0.351s</span></pre>
</td> </td>
</tr> </tr>

126
public/text-templates generated
View File

@ -45,8 +45,7 @@ features and should be used for generating HTML.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/pDwkw1iMACF"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/pDwkw1iMACF"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,11 +55,10 @@ features and should be used for generating HTML.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="s">&#34;text/template&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;text/template&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -70,8 +68,7 @@ features and should be used for generating HTML.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -85,13 +82,11 @@ Templates are a mix of static text and &ldquo;actions&rdquo; enclosed in
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t1</span> <span class="o">:=</span> <span class="nx">template</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="s">&#34;t1&#34;</span><span class="p">)</span>
<span class="nx">t1</span> <span class="o">:=</span> <span class="nx">template</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="s">&#34;t1&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">t1</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">t1</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="s">&#34;Value is {{.}}\n&#34;</span><span class="p">)</span>
<span class="nx">t1</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">t1</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="s">&#34;Value is {{.}}\n&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -104,9 +99,7 @@ useful for templates initialized in the global scope.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t1</span> <span class="p">=</span> <span class="nx">template</span><span class="p">.</span><span class="nf">Must</span><span class="p">(</span><span class="nx">t1</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="s">&#34;Value: {{.}}\n&#34;</span><span class="p">))</span></span></span></code></pre>
<span class="nx">t1</span> <span class="p">=</span> <span class="nx">template</span><span class="p">.</span><span class="nf">Must</span><span class="p">(</span><span class="nx">t1</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="s">&#34;Value: {{.}}\n&#34;</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -119,16 +112,14 @@ replaced by the value passed as a parameter to <code>Execute</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t1</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="s">&#34;some text&#34;</span><span class="p">)</span>
<span class="nx">t1</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="s">&#34;some text&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">t1</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="nx">t1</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">t1</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span>
<span class="nx">t1</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;Go&#34;</span><span class="p">,</span>
<span class="s">&#34;Go&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;Rust&#34;</span><span class="p">,</span>
<span class="s">&#34;Rust&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;C++&#34;</span><span class="p">,</span>
<span class="s">&#34;C++&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;C#&#34;</span><span class="p">,</span>
<span class="s">&#34;C#&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">})</span></span></span></code></pre>
<span class="p">})</span>
</pre>
</td> </td>
</tr> </tr>
@ -139,11 +130,9 @@ replaced by the value passed as a parameter to <code>Execute</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">Create</span> <span class="o">:=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">t</span> <span class="kt">string</span><span class="p">)</span> <span class="o">*</span><span class="nx">template</span><span class="p">.</span><span class="nx">Template</span> <span class="p">{</span>
<span class="nx">Create</span> <span class="o">:=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">t</span> <span class="kt">string</span><span class="p">)</span> <span class="o">*</span><span class="nx">template</span><span class="p">.</span><span class="nx">Template</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">template</span><span class="p">.</span><span class="nf">Must</span><span class="p">(</span><span class="nx">template</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="nx">name</span><span class="p">).</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">t</span><span class="p">))</span>
<span class="k">return</span> <span class="nx">template</span><span class="p">.</span><span class="nf">Must</span><span class="p">(</span><span class="nx">template</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="nx">name</span><span class="p">).</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">t</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -156,9 +145,7 @@ template is executing.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t2</span> <span class="o">:=</span> <span class="nf">Create</span><span class="p">(</span><span class="s">&#34;t2&#34;</span><span class="p">,</span> <span class="s">&#34;Name: {{.Name}}\n&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">t2</span> <span class="o">:=</span> <span class="nf">Create</span><span class="p">(</span><span class="s">&#34;t2&#34;</span><span class="p">,</span> <span class="s">&#34;Name: {{.Name}}\n&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -168,10 +155,9 @@ template is executing.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">t2</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="kd">struct</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t2</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="nx">Name</span> <span class="kt">string</span> </span></span><span class="line"><span class="cl"> <span class="nx">Name</span> <span class="kt">string</span>
<span class="p">}{</span><span class="s">&#34;Jane Doe&#34;</span><span class="p">})</span> </span></span><span class="line"><span class="cl"> <span class="p">}{</span><span class="s">&#34;Jane Doe&#34;</span><span class="p">})</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -183,11 +169,9 @@ case of key names.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t2</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span>
<span class="nx">t2</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;Name&#34;</span><span class="p">:</span> <span class="s">&#34;Mickey Mouse&#34;</span><span class="p">,</span>
<span class="s">&#34;Name&#34;</span><span class="p">:</span> <span class="s">&#34;Mickey Mouse&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">})</span></span></span></code></pre>
<span class="p">})</span>
</pre>
</td> </td>
</tr> </tr>
@ -202,12 +186,10 @@ feature of templates: using <code>-</code> in actions to trim whitespace.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t3</span> <span class="o">:=</span> <span class="nf">Create</span><span class="p">(</span><span class="s">&#34;t3&#34;</span><span class="p">,</span>
<span class="nx">t3</span> <span class="o">:=</span> <span class="nf">Create</span><span class="p">(</span><span class="s">&#34;t3&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;{{if . -}} yes {{else -}} no {{end}}\n&#34;</span><span class="p">)</span>
<span class="s">&#34;{{if . -}} yes {{else -}} no {{end}}\n&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">t3</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="s">&#34;not empty&#34;</span><span class="p">)</span>
<span class="nx">t3</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="s">&#34;not empty&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">t3</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="s">&#34;&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">t3</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> <span class="s">&#34;&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -219,18 +201,16 @@ the range block <code>{{.}}</code> is set to the current item of the iteration.<
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t4</span> <span class="o">:=</span> <span class="nf">Create</span><span class="p">(</span><span class="s">&#34;t4&#34;</span><span class="p">,</span>
<span class="nx">t4</span> <span class="o">:=</span> <span class="nf">Create</span><span class="p">(</span><span class="s">&#34;t4&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;Range: {{range .}}{{.}} {{end}}\n&#34;</span><span class="p">)</span>
<span class="s">&#34;Range: {{range .}}{{.}} {{end}}\n&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">t4</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span>
<span class="nx">t4</span><span class="p">.</span><span class="nf">Execute</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">Stdout</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span>
<span class="p">[]</span><span class="kt">string</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;Go&#34;</span><span class="p">,</span>
<span class="s">&#34;Go&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;Rust&#34;</span><span class="p">,</span>
<span class="s">&#34;Rust&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;C++&#34;</span><span class="p">,</span>
<span class="s">&#34;C++&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;C#&#34;</span><span class="p">,</span>
<span class="s">&#34;C#&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">})</span>
<span class="p">})</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -244,15 +224,15 @@ the range block <code>{{.}}</code> is set to the current item of the iteration.<
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run templates.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run templates.go
<span class="go">Value: some text </span></span><span class="line"><span class="cl"><span class="go">Value: some text
</span><span class="go">Value: 5 </span></span></span><span class="line"><span class="cl"><span class="go">Value: 5
</span><span class="go">Value: [Go Rust C++ C#] </span></span></span><span class="line"><span class="cl"><span class="go">Value: [Go Rust C++ C#]
</span><span class="go">Name: Jane Doe </span></span></span><span class="line"><span class="cl"><span class="go">Name: Jane Doe
</span><span class="go">Name: Mickey Mouse </span></span></span><span class="line"><span class="cl"><span class="go">Name: Mickey Mouse
</span><span class="go">yes </span></span></span><span class="line"><span class="cl"><span class="go">yes
</span><span class="go">no </span></span></span><span class="line"><span class="cl"><span class="go">no
</span><span class="go">Range: Go Rust C++ C# </span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">Range: Go Rust C++ C# </span></span></span></code></pre>
</td> </td>
</tr> </tr>

65
public/tickers generated
View File

@ -46,8 +46,7 @@ periodically until we stop it.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/gs6zoJP-Pl9"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/gs6zoJP-Pl9"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -57,11 +56,10 @@ periodically until we stop it.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -71,8 +69,7 @@ periodically until we stop it.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -86,10 +83,8 @@ values as they arrive every 500ms.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">ticker</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">NewTicker</span><span class="p">(</span><span class="mi">500</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span>
<span class="nx">ticker</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">NewTicker</span><span class="p">(</span><span class="mi">500</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">)</span></span></span></code></pre>
<span class="nx">done</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">bool</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -99,17 +94,16 @@ values as they arrive every 500ms.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="p">{</span>
<span class="k">select</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
<span class="k">case</span> <span class="o">&lt;-</span><span class="nx">done</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o">&lt;-</span><span class="nx">done</span><span class="p">:</span>
<span class="k">return</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span>
<span class="k">case</span> <span class="nx">t</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">ticker</span><span class="p">.</span><span class="nx">C</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">t</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">ticker</span><span class="p">.</span><span class="nx">C</span><span class="p">:</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Tick at&#34;</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Tick at&#34;</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -122,13 +116,11 @@ channel. We&rsquo;ll stop ours after 1600ms.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">1600</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">1600</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">ticker</span><span class="p">.</span><span class="nf">Stop</span><span class="p">()</span>
<span class="nx">ticker</span><span class="p">.</span><span class="nf">Stop</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o">&lt;-</span> <span class="kc">true</span>
<span class="nx">done</span> <span class="o">&lt;-</span> <span class="kc">true</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Ticker stopped&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Ticker stopped&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -144,12 +136,11 @@ before we stop it.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run tickers.go
<span class="gp">$</span> go run tickers.go </span></span><span class="line"><span class="cl"><span class="go">Tick at 2012-09-23 11:29:56.487625 -0700 PDT
<span class="go">Tick at 2012-09-23 11:29:56.487625 -0700 PDT </span></span></span><span class="line"><span class="cl"><span class="go">Tick at 2012-09-23 11:29:56.988063 -0700 PDT
</span><span class="go">Tick at 2012-09-23 11:29:56.988063 -0700 PDT </span></span></span><span class="line"><span class="cl"><span class="go">Tick at 2012-09-23 11:29:57.488076 -0700 PDT
</span><span class="go">Tick at 2012-09-23 11:29:57.488076 -0700 PDT </span></span></span><span class="line"><span class="cl"><span class="go">Ticker stopped</span></span></span></code></pre>
</span><span class="go">Ticker stopped</span></pre>
</td> </td>
</tr> </tr>

129
public/time generated
View File

@ -43,8 +43,7 @@ here are some examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/YAM3s1KPc8c"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/YAM3s1KPc8c"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,11 +53,10 @@ here are some examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -68,9 +66,8 @@ here are some examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">p</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span> </span></span><span class="line"><span class="cl"> <span class="nx">p</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -81,10 +78,8 @@ here are some examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">now</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span>
<span class="nx">now</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">now</span><span class="p">)</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">now</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -97,11 +92,9 @@ with a <code>Location</code>, i.e. time zone.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">then</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Date</span><span class="p">(</span>
<span class="nx">then</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Date</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="mi">2009</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">34</span><span class="p">,</span> <span class="mi">58</span><span class="p">,</span> <span class="mi">651387237</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nx">UTC</span><span class="p">)</span>
<span class="mi">2009</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">34</span><span class="p">,</span> <span class="mi">58</span><span class="p">,</span> <span class="mi">651387237</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nx">UTC</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">)</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -113,16 +106,14 @@ value as expected.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Year</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Year</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Month</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Month</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Day</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Day</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Hour</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Hour</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Minute</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Minute</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Second</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Second</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Nanosecond</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Nanosecond</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Location</span><span class="p">())</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Location</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -133,9 +124,7 @@ value as expected.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Weekday</span><span class="p">())</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Weekday</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -148,11 +137,9 @@ as the second, respectively.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Before</span><span class="p">(</span><span class="nx">now</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Before</span><span class="p">(</span><span class="nx">now</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">After</span><span class="p">(</span><span class="nx">now</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">After</span><span class="p">(</span><span class="nx">now</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Equal</span><span class="p">(</span><span class="nx">now</span><span class="p">))</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Equal</span><span class="p">(</span><span class="nx">now</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -164,10 +151,8 @@ the interval between two times.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">diff</span> <span class="o">:=</span> <span class="nx">now</span><span class="p">.</span><span class="nf">Sub</span><span class="p">(</span><span class="nx">then</span><span class="p">)</span>
<span class="nx">diff</span> <span class="o">:=</span> <span class="nx">now</span><span class="p">.</span><span class="nf">Sub</span><span class="p">(</span><span class="nx">then</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">)</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -179,12 +164,10 @@ various units.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">.</span><span class="nf">Hours</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">.</span><span class="nf">Hours</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">.</span><span class="nf">Minutes</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">.</span><span class="nf">Minutes</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">.</span><span class="nf">Seconds</span><span class="p">())</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">.</span><span class="nf">Seconds</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">.</span><span class="nf">Nanoseconds</span><span class="p">())</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">.</span><span class="nf">Nanoseconds</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -197,11 +180,9 @@ duration.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="nx">diff</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="nx">diff</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="o">-</span><span class="nx">diff</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="o">-</span><span class="nx">diff</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -215,28 +196,28 @@ duration.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run time.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run time.go
<span class="go">2012-10-31 15:50:13.793654 +0000 UTC </span></span><span class="line"><span class="cl"><span class="go">2012-10-31 15:50:13.793654 +0000 UTC
</span><span class="go">2009-11-17 20:34:58.651387237 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">2009-11-17 20:34:58.651387237 +0000 UTC
</span><span class="go">2009 </span></span></span><span class="line"><span class="cl"><span class="go">2009
</span><span class="go">November </span></span></span><span class="line"><span class="cl"><span class="go">November
</span><span class="go">17 </span></span></span><span class="line"><span class="cl"><span class="go">17
</span><span class="go">20 </span></span></span><span class="line"><span class="cl"><span class="go">20
</span><span class="go">34 </span></span></span><span class="line"><span class="cl"><span class="go">34
</span><span class="go">58 </span></span></span><span class="line"><span class="cl"><span class="go">58
</span><span class="go">651387237 </span></span></span><span class="line"><span class="cl"><span class="go">651387237
</span><span class="go">UTC </span></span></span><span class="line"><span class="cl"><span class="go">UTC
</span><span class="go">Tuesday </span></span></span><span class="line"><span class="cl"><span class="go">Tuesday
</span><span class="go">true </span></span></span><span class="line"><span class="cl"><span class="go">true
</span><span class="go">false </span></span></span><span class="line"><span class="cl"><span class="go">false
</span><span class="go">false </span></span></span><span class="line"><span class="cl"><span class="go">false
</span><span class="go">25891h15m15.142266763s </span></span></span><span class="line"><span class="cl"><span class="go">25891h15m15.142266763s
</span><span class="go">25891.25420618521 </span></span></span><span class="line"><span class="cl"><span class="go">25891.25420618521
</span><span class="go">1.5534752523711128e+06 </span></span></span><span class="line"><span class="cl"><span class="go">1.5534752523711128e+06
</span><span class="go">9.320851514226677e+07 </span></span></span><span class="line"><span class="cl"><span class="go">9.320851514226677e+07
</span><span class="go">93208515142266763 </span></span></span><span class="line"><span class="cl"><span class="go">93208515142266763
</span><span class="go">2012-10-31 15:50:13.793654 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">2012-10-31 15:50:13.793654 +0000 UTC
</span><span class="go">2006-12-05 01:19:43.509120474 +0000 UTC</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">2006-12-05 01:19:43.509120474 +0000 UTC</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -43,8 +43,7 @@ pattern-based layouts.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/BoZYtr_2j66"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/BoZYtr_2j66"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,11 +53,10 @@ pattern-based layouts.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -68,9 +66,8 @@ pattern-based layouts.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">p</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span> </span></span><span class="line"><span class="cl"> <span class="nx">p</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -83,10 +80,8 @@ constant.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span>
<span class="nx">t</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">t</span><span class="p">.</span><span class="nf">Format</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">RFC3339</span><span class="p">))</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">t</span><span class="p">.</span><span class="nf">Format</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">RFC3339</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -97,12 +92,10 @@ constant.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t1</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span>
<span class="nx">t1</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nx">RFC3339</span><span class="p">,</span>
<span class="nx">time</span><span class="p">.</span><span class="nx">RFC3339</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;2012-11-01T22:08:41+00:00&#34;</span><span class="p">)</span>
<span class="s">&#34;2012-11-01T22:08:41+00:00&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">t1</span><span class="p">)</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">t1</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -119,14 +112,12 @@ The example time must be exactly as shown: the year 2006,
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">t</span><span class="p">.</span><span class="nf">Format</span><span class="p">(</span><span class="s">&#34;3:04PM&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">t</span><span class="p">.</span><span class="nf">Format</span><span class="p">(</span><span class="s">&#34;3:04PM&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">t</span><span class="p">.</span><span class="nf">Format</span><span class="p">(</span><span class="s">&#34;Mon Jan _2 15:04:05 2006&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">t</span><span class="p">.</span><span class="nf">Format</span><span class="p">(</span><span class="s">&#34;Mon Jan _2 15:04:05 2006&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">t</span><span class="p">.</span><span class="nf">Format</span><span class="p">(</span><span class="s">&#34;2006-01-02T15:04:05.999999-07:00&#34;</span><span class="p">))</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">t</span><span class="p">.</span><span class="nf">Format</span><span class="p">(</span><span class="s">&#34;2006-01-02T15:04:05.999999-07:00&#34;</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">form</span> <span class="o">:=</span> <span class="s">&#34;3 04 PM&#34;</span>
<span class="nx">form</span> <span class="o">:=</span> <span class="s">&#34;3 04 PM&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">t2</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">form</span><span class="p">,</span> <span class="s">&#34;8 41 PM&#34;</span><span class="p">)</span>
<span class="nx">t2</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">form</span><span class="p">,</span> <span class="s">&#34;8 41 PM&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">t2</span><span class="p">)</span></span></span></code></pre>
<span class="nf">p</span><span class="p">(</span><span class="nx">t2</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -139,11 +130,9 @@ components of the time value.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%d-%02d-%02dT%02d:%02d:%02d-00:00\n&#34;</span><span class="p">,</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;%d-%02d-%02dT%02d:%02d:%02d-00:00\n&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nx">t</span><span class="p">.</span><span class="nf">Year</span><span class="p">(),</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Month</span><span class="p">(),</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Day</span><span class="p">(),</span>
<span class="nx">t</span><span class="p">.</span><span class="nf">Year</span><span class="p">(),</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Month</span><span class="p">(),</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Day</span><span class="p">(),</span> </span></span><span class="line"><span class="cl"> <span class="nx">t</span><span class="p">.</span><span class="nf">Hour</span><span class="p">(),</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Minute</span><span class="p">(),</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Second</span><span class="p">())</span></span></span></code></pre>
<span class="nx">t</span><span class="p">.</span><span class="nf">Hour</span><span class="p">(),</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Minute</span><span class="p">(),</span> <span class="nx">t</span><span class="p">.</span><span class="nf">Second</span><span class="p">())</span>
</pre>
</td> </td>
</tr> </tr>
@ -155,12 +144,10 @@ explaining the parsing problem.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">ansic</span> <span class="o">:=</span> <span class="s">&#34;Mon Jan _2 15:04:05 2006&#34;</span>
<span class="nx">ansic</span> <span class="o">:=</span> <span class="s">&#34;Mon Jan _2 15:04:05 2006&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">e</span> <span class="p">=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">ansic</span><span class="p">,</span> <span class="s">&#34;8:41PM&#34;</span><span class="p">)</span>
<span class="nx">_</span><span class="p">,</span> <span class="nx">e</span> <span class="p">=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">ansic</span><span class="p">,</span> <span class="s">&#34;8:41PM&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span>
<span class="nf">p</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -174,15 +161,15 @@ explaining the parsing problem.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run time-formatting-parsing.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run time-formatting-parsing.go
<span class="go">2014-04-15T18:00:15-07:00 </span></span><span class="line"><span class="cl"><span class="go">2014-04-15T18:00:15-07:00
</span><span class="go">2012-11-01 22:08:41 +0000 +0000 </span></span></span><span class="line"><span class="cl"><span class="go">2012-11-01 22:08:41 +0000 +0000
</span><span class="go">6:00PM </span></span></span><span class="line"><span class="cl"><span class="go">6:00PM
</span><span class="go">Tue Apr 15 18:00:15 2014 </span></span></span><span class="line"><span class="cl"><span class="go">Tue Apr 15 18:00:15 2014
</span><span class="go">2014-04-15T18:00:15.161182-07:00 </span></span></span><span class="line"><span class="cl"><span class="go">2014-04-15T18:00:15.161182-07:00
</span><span class="go">0000-01-01 20:41:00 +0000 UTC </span></span></span><span class="line"><span class="cl"><span class="go">0000-01-01 20:41:00 +0000 UTC
</span><span class="go">2014-04-15T18:00:15-00:00 </span></span></span><span class="line"><span class="cl"><span class="go">2014-04-15T18:00:15-00:00
</span><span class="go">parsing time &#34;8:41PM&#34; as &#34;Mon Jan _2 15:04:05 2006&#34;: ...</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">parsing time &#34;8:41PM&#34; as &#34;Mon Jan _2 15:04:05 2006&#34;: ...</span></span></span></code></pre>
</td> </td>
</tr> </tr>

74
public/timeouts generated
View File

@ -45,8 +45,7 @@ elegant thanks to channels and <code>select</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/gyr0NbVKBVf"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/gyr0NbVKBVf"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,11 +55,10 @@ elegant thanks to channels and <code>select</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -70,8 +68,7 @@ elegant thanks to channels and <code>select</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -87,13 +84,11 @@ channel is never read.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">c1</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="nx">c1</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">c1</span> <span class="o">&lt;-</span> <span class="s">&#34;result 1&#34;</span>
<span class="nx">c1</span> <span class="o">&lt;-</span> <span class="s">&#34;result 1&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
<span class="p">}()</span>
</pre>
</td> </td>
</tr> </tr>
@ -109,14 +104,12 @@ if the operation takes more than the allowed 1s.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
<span class="k">select</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">res</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">c1</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">res</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">c1</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o">&lt;-</span><span class="nx">time</span><span class="p">.</span><span class="nf">After</span><span class="p">(</span><span class="mi">1</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">):</span>
<span class="k">case</span> <span class="o">&lt;-</span><span class="nx">time</span><span class="p">.</span><span class="nf">After</span><span class="p">(</span><span class="mi">1</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;timeout 1&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;timeout 1&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -128,20 +121,18 @@ from <code>c2</code> will succeed and we&rsquo;ll print the result.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">c2</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="nx">c2</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">string</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">c2</span> <span class="o">&lt;-</span> <span class="s">&#34;result 2&#34;</span>
<span class="nx">c2</span> <span class="o">&lt;-</span> <span class="s">&#34;result 2&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
<span class="k">select</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">res</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">c2</span><span class="p">:</span>
<span class="k">case</span> <span class="nx">res</span> <span class="o">:=</span> <span class="o">&lt;-</span><span class="nx">c2</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o">&lt;-</span><span class="nx">time</span><span class="p">.</span><span class="nf">After</span><span class="p">(</span><span class="mi">3</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">):</span>
<span class="k">case</span> <span class="o">&lt;-</span><span class="nx">time</span><span class="p">.</span><span class="nf">After</span><span class="p">(</span><span class="mi">3</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;timeout 2&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;timeout 2&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -157,10 +148,9 @@ out and the second succeeding.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run timeouts.go
<span class="gp">$</span> go run timeouts.go </span></span><span class="line"><span class="cl"><span class="go">timeout 1
<span class="go">timeout 1 </span></span></span><span class="line"><span class="cl"><span class="go">result 2</span></span></span></code></pre>
</span><span class="go">result 2</span></pre>
</td> </td>
</tr> </tr>

58
public/timers generated
View File

@ -46,8 +46,7 @@ at <a href="tickers">tickers</a>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/gF7VLRz3URM"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/gF7VLRz3URM"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -57,11 +56,10 @@ at <a href="tickers">tickers</a>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -71,8 +69,7 @@ at <a href="tickers">tickers</a>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -86,9 +83,7 @@ time. This timer will wait 2 seconds.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">timer1</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">NewTimer</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span></span></span></code></pre>
<span class="nx">timer1</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">NewTimer</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -101,10 +96,8 @@ fired.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">timer1</span><span class="p">.</span><span class="nx">C</span>
<span class="o">&lt;-</span><span class="nx">timer1</span><span class="p">.</span><span class="nx">C</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Timer 1 fired&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Timer 1 fired&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -118,17 +111,15 @@ Here&rsquo;s an example of that.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">timer2</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">NewTimer</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">timer2</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nf">NewTimer</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">timer2</span><span class="p">.</span><span class="nx">C</span>
<span class="o">&lt;-</span><span class="nx">timer2</span><span class="p">.</span><span class="nx">C</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Timer 2 fired&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Timer 2 fired&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="nx">stop2</span> <span class="o">:=</span> <span class="nx">timer2</span><span class="p">.</span><span class="nf">Stop</span><span class="p">()</span>
<span class="nx">stop2</span> <span class="o">:=</span> <span class="nx">timer2</span><span class="p">.</span><span class="nf">Stop</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">stop2</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">stop2</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Timer 2 stopped&#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Timer 2 stopped&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -140,10 +131,8 @@ was going to, to show it is in fact stopped.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -160,10 +149,9 @@ a chance to fire.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run timers.go
<span class="gp">$</span> go run timers.go </span></span><span class="line"><span class="cl"><span class="go">Timer 1 fired
<span class="go">Timer 1 fired </span></span></span><span class="line"><span class="cl"><span class="go">Timer 2 stopped</span></span></span></code></pre>
</span><span class="go">Timer 2 stopped</span></pre>
</td> </td>
</tr> </tr>

100
public/url-parsing generated
View File

@ -43,8 +43,7 @@ Here&rsquo;s how to parse URLs in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/fHTQn9X7l1B"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/fHTQn9X7l1B"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,12 +53,11 @@ Here&rsquo;s how to parse URLs in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;net&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;net&#34;</span>
<span class="s">&#34;net/url&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;net/url&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,8 +67,7 @@ Here&rsquo;s how to parse URLs in Go.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -83,9 +80,7 @@ query params, and query fragment.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span> <span class="o">:=</span> <span class="s">&#34;postgres://user:pass@host.com:5432/path?k=v#f&#34;</span></span></span></code></pre>
<span class="nx">s</span> <span class="o">:=</span> <span class="s">&#34;postgres://user:pass@host.com:5432/path?k=v#f&#34;</span>
</pre>
</td> </td>
</tr> </tr>
@ -96,12 +91,10 @@ query params, and query fragment.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">u</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">url</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span>
<span class="nx">u</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">url</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="nx">s</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -112,9 +105,7 @@ query params, and query fragment.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Scheme</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Scheme</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -127,12 +118,10 @@ values.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">User</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">User</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">User</span><span class="p">.</span><span class="nf">Username</span><span class="p">())</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">User</span><span class="p">.</span><span class="nf">Username</span><span class="p">())</span> </span></span><span class="line"><span class="cl"> <span class="nx">p</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">u</span><span class="p">.</span><span class="nx">User</span><span class="p">.</span><span class="nf">Password</span><span class="p">()</span>
<span class="nx">p</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">u</span><span class="p">.</span><span class="nx">User</span><span class="p">.</span><span class="nf">Password</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">p</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">p</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -144,12 +133,10 @@ if present. Use <code>SplitHostPort</code> to extract them.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Host</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Host</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">host</span><span class="p">,</span> <span class="nx">port</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">net</span><span class="p">.</span><span class="nf">SplitHostPort</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Host</span><span class="p">)</span>
<span class="nx">host</span><span class="p">,</span> <span class="nx">port</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">net</span><span class="p">.</span><span class="nf">SplitHostPort</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Host</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">host</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">host</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">port</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">port</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -161,10 +148,8 @@ the <code>#</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Path</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Path</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Fragment</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">Fragment</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -179,13 +164,11 @@ if you only want the first value.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">RawQuery</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">RawQuery</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">m</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">url</span><span class="p">.</span><span class="nf">ParseQuery</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">RawQuery</span><span class="p">)</span>
<span class="nx">m</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">url</span><span class="p">.</span><span class="nf">ParseQuery</span><span class="p">(</span><span class="nx">u</span><span class="p">.</span><span class="nx">RawQuery</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">m</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">m</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">m</span><span class="p">[</span><span class="s">&#34;k&#34;</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">m</span><span class="p">[</span><span class="s">&#34;k&#34;</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -201,20 +184,19 @@ pieces that we extracted.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run url-parsing.go
<span class="gp">$</span> go run url-parsing.go </span></span><span class="line"><span class="cl"><span class="go">postgres
<span class="go">postgres </span></span></span><span class="line"><span class="cl"><span class="go">user:pass
</span><span class="go">user:pass </span></span></span><span class="line"><span class="cl"><span class="go">user
</span><span class="go">user </span></span></span><span class="line"><span class="cl"><span class="go">pass
</span><span class="go">pass </span></span></span><span class="line"><span class="cl"><span class="go">host.com:5432
</span><span class="go">host.com:5432 </span></span></span><span class="line"><span class="cl"><span class="go">host.com
</span><span class="go">host.com </span></span></span><span class="line"><span class="cl"><span class="go">5432
</span><span class="go">5432 </span></span></span><span class="line"><span class="cl"><span class="go">/path
</span><span class="go">/path </span></span></span><span class="line"><span class="cl"><span class="go">f
</span><span class="go">f </span></span></span><span class="line"><span class="cl"><span class="go">k=v
</span><span class="go">k=v </span></span></span><span class="line"><span class="cl"><span class="go">map[k:[v]]
</span><span class="go">map[k:[v]] </span></span></span><span class="line"><span class="cl"><span class="go">v</span></span></span></code></pre>
</span><span class="go">v</span></pre>
</td> </td>
</tr> </tr>

43
public/values generated
View File

@ -44,8 +44,7 @@ basic examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/YnVS3LZr8pk"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/YnVS3LZr8pk"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,8 +54,7 @@ basic examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -66,8 +64,7 @@ basic examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -78,9 +75,7 @@ basic examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;go&#34;</span> <span class="o">+</span> <span class="s">&#34;lang&#34;</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;go&#34;</span> <span class="o">+</span> <span class="s">&#34;lang&#34;</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -91,10 +86,8 @@ basic examples.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;1+1 =&#34;</span><span class="p">,</span> <span class="mi">1</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;1+1 =&#34;</span><span class="p">,</span> <span class="mi">1</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;7.0/3.0 =&#34;</span><span class="p">,</span> <span class="mf">7.0</span><span class="o">/</span><span class="mf">3.0</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;7.0/3.0 =&#34;</span><span class="p">,</span> <span class="mf">7.0</span><span class="o">/</span><span class="mf">3.0</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -105,12 +98,10 @@ basic examples.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="kc">true</span> <span class="o">&amp;&amp;</span> <span class="kc">false</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="kc">true</span> <span class="o">&amp;&amp;</span> <span class="kc">false</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="kc">true</span> <span class="o">||</span> <span class="kc">false</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="kc">true</span> <span class="o">||</span> <span class="kc">false</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(!</span><span class="kc">true</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(!</span><span class="kc">true</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -124,13 +115,13 @@ basic examples.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run values.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run values.go
<span class="go">golang </span></span><span class="line"><span class="cl"><span class="go">golang
</span><span class="go">1+1 = 2 </span></span></span><span class="line"><span class="cl"><span class="go">1+1 = 2
</span><span class="go">7.0/3.0 = 2.3333333333333335 </span></span></span><span class="line"><span class="cl"><span class="go">7.0/3.0 = 2.3333333333333335
</span><span class="go">false </span></span></span><span class="line"><span class="cl"><span class="go">false
</span><span class="go">true </span></span></span><span class="line"><span class="cl"><span class="go">true
</span><span class="go">false</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">false</span></span></span></code></pre>
</td> </td>
</tr> </tr>

53
public/variables generated
View File

@ -44,8 +44,7 @@ calls.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/N5rWndIliJW"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/N5rWndIliJW"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -55,8 +54,7 @@ calls.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -66,8 +64,7 @@ calls.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -78,10 +75,8 @@ calls.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">a</span> <span class="p">=</span> <span class="s">&#34;initial&#34;</span>
<span class="kd">var</span> <span class="nx">a</span> <span class="p">=</span> <span class="s">&#34;initial&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -92,10 +87,8 @@ calls.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">b</span><span class="p">,</span> <span class="nx">c</span> <span class="kt">int</span> <span class="p">=</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span>
<span class="kd">var</span> <span class="nx">b</span><span class="p">,</span> <span class="nx">c</span> <span class="kt">int</span> <span class="p">=</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -106,10 +99,8 @@ calls.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">d</span> <span class="p">=</span> <span class="kc">true</span>
<span class="kd">var</span> <span class="nx">d</span> <span class="p">=</span> <span class="kc">true</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -122,10 +113,8 @@ zero value for an <code>int</code> is <code>0</code>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">e</span> <span class="kt">int</span>
<span class="kd">var</span> <span class="nx">e</span> <span class="kt">int</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -139,11 +128,9 @@ This syntax is only available inside functions.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">f</span> <span class="o">:=</span> <span class="s">&#34;apple&#34;</span>
<span class="nx">f</span> <span class="o">:=</span> <span class="s">&#34;apple&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -157,12 +144,12 @@ This syntax is only available inside functions.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run variables.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run variables.go
<span class="go">initial </span></span><span class="line"><span class="cl"><span class="go">initial
</span><span class="go">1 2 </span></span></span><span class="line"><span class="cl"><span class="go">1 2
</span><span class="go">true </span></span></span><span class="line"><span class="cl"><span class="go">true
</span><span class="go">0 </span></span></span><span class="line"><span class="cl"><span class="go">0
</span><span class="go">apple</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">apple</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -45,8 +45,7 @@ function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/glNdE8aKPNq"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/glNdE8aKPNq"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -56,8 +55,7 @@ function.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,11 +67,9 @@ of <code>int</code>s as arguments.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">sum</span><span class="p">(</span><span class="nx">nums</span> <span class="o">...</span><span class="kt">int</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">sum</span><span class="p">(</span><span class="nx">nums</span> <span class="o">...</span><span class="kt">int</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">total</span> <span class="o">:=</span> <span class="mi">0</span></span></span></code></pre>
<span class="nx">total</span> <span class="o">:=</span> <span class="mi">0</span>
</pre>
</td> </td>
</tr> </tr>
@ -86,13 +82,11 @@ iterate over it with <code>range</code>, etc.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">num</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">nums</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">num</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">nums</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">total</span> <span class="o">+=</span> <span class="nx">num</span>
<span class="nx">total</span> <span class="o">+=</span> <span class="nx">num</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">total</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">total</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -102,8 +96,7 @@ iterate over it with <code>range</code>, etc.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -115,10 +108,8 @@ with individual arguments.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">sum</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="nf">sum</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">sum</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span></span></span></code></pre>
<span class="nf">sum</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -131,11 +122,9 @@ apply them to a variadic function using
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">nums</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">}</span>
<span class="nx">nums</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nf">sum</span><span class="p">(</span><span class="nx">nums</span><span class="o">...</span><span class="p">)</span>
<span class="nf">sum</span><span class="p">(</span><span class="nx">nums</span><span class="o">...</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -149,10 +138,10 @@ apply them to a variadic function using
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run variadic-functions.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run variadic-functions.go
<span class="go">[1 2] 3 </span></span><span class="line"><span class="cl"><span class="go">[1 2] 3
</span><span class="go">[1 2 3] 6 </span></span></span><span class="line"><span class="cl"><span class="go">[1 2 3] 6
</span><span class="go">[1 2 3 4] 10</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">[1 2 3 4] 10</span></span></span></code></pre>
</td> </td>
</tr> </tr>

87
public/waitgroups generated
View File

@ -43,8 +43,7 @@ use a <em>wait group</em>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/S98GjeaGBX0"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/S98GjeaGBX0"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,12 +53,11 @@ use a <em>wait group</em>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;sync&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;sync&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -70,10 +68,8 @@ use a <em>wait group</em>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">id</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">id</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;Worker %d starting\n&#34;</span><span class="p">,</span> <span class="nx">id</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;Worker %d starting\n&#34;</span><span class="p">,</span> <span class="nx">id</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -84,11 +80,9 @@ use a <em>wait group</em>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;Worker %d done\n&#34;</span><span class="p">,</span> <span class="nx">id</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;Worker %d done\n&#34;</span><span class="p">,</span> <span class="nx">id</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -98,8 +92,7 @@ use a <em>wait group</em>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -112,9 +105,7 @@ explicitly passed into functions, it should be done <em>by pointer</em>.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">wg</span> <span class="nx">sync</span><span class="p">.</span><span class="nx">WaitGroup</span></span></span></code></pre>
<span class="kd">var</span> <span class="nx">wg</span> <span class="nx">sync</span><span class="p">.</span><span class="nx">WaitGroup</span>
</pre>
</td> </td>
</tr> </tr>
@ -126,10 +117,8 @@ counter for each.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">wg</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span></span></span></code></pre>
<span class="nx">wg</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -142,9 +131,7 @@ for more details.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">i</span> <span class="o">:=</span> <span class="nx">i</span></span></span></code></pre>
<span class="nx">i</span> <span class="o">:=</span> <span class="nx">i</span>
</pre>
</td> </td>
</tr> </tr>
@ -158,13 +145,11 @@ involved in its execution.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nx">wg</span><span class="p">.</span><span class="nf">Done</span><span class="p">()</span>
<span class="k">defer</span> <span class="nx">wg</span><span class="p">.</span><span class="nf">Done</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="nf">worker</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span>
<span class="nf">worker</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}()</span>
<span class="p">}()</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -176,9 +161,7 @@ all the workers notified they&rsquo;re done.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">wg</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span></span></span></code></pre>
<span class="nx">wg</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -192,9 +175,7 @@ advanced use cases, consider using the
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -208,17 +189,17 @@ advanced use cases, consider using the
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="gp">$</span> go run waitgroups.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run waitgroups.go
<span class="go">Worker 5 starting </span></span><span class="line"><span class="cl"><span class="go">Worker 5 starting
</span><span class="go">Worker 3 starting </span></span></span><span class="line"><span class="cl"><span class="go">Worker 3 starting
</span><span class="go">Worker 4 starting </span></span></span><span class="line"><span class="cl"><span class="go">Worker 4 starting
</span><span class="go">Worker 1 starting </span></span></span><span class="line"><span class="cl"><span class="go">Worker 1 starting
</span><span class="go">Worker 2 starting </span></span></span><span class="line"><span class="cl"><span class="go">Worker 2 starting
</span><span class="go">Worker 4 done </span></span></span><span class="line"><span class="cl"><span class="go">Worker 4 done
</span><span class="go">Worker 1 done </span></span></span><span class="line"><span class="cl"><span class="go">Worker 1 done
</span><span class="go">Worker 2 done </span></span></span><span class="line"><span class="cl"><span class="go">Worker 2 done
</span><span class="go">Worker 5 done </span></span></span><span class="line"><span class="cl"><span class="go">Worker 5 done
</span><span class="go">Worker 3 done</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go">Worker 3 done</span></span></span></code></pre>
</td> </td>
</tr> </tr>

94
public/worker-pools generated
View File

@ -43,8 +43,7 @@ a <em>worker pool</em> using goroutines and channels.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/hiSJJsYZJKL"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/hiSJJsYZJKL"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,11 +53,10 @@ a <em>worker pool</em> using goroutines and channels.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;time&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;time&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -73,16 +71,14 @@ simulate an expensive task.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">id</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">jobs</span> <span class="o">&lt;-</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">results</span> <span class="kd">chan</span><span class="o">&lt;-</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">id</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">jobs</span> <span class="o">&lt;-</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">results</span> <span class="kd">chan</span><span class="o">&lt;-</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">jobs</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">jobs</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;worker&#34;</span><span class="p">,</span> <span class="nx">id</span><span class="p">,</span> <span class="s">&#34;started job&#34;</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;worker&#34;</span><span class="p">,</span> <span class="nx">id</span><span class="p">,</span> <span class="s">&#34;started job&#34;</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span>
<span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;worker&#34;</span><span class="p">,</span> <span class="nx">id</span><span class="p">,</span> <span class="s">&#34;finished job&#34;</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;worker&#34;</span><span class="p">,</span> <span class="nx">id</span><span class="p">,</span> <span class="s">&#34;finished job&#34;</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">results</span> <span class="o">&lt;-</span> <span class="nx">j</span> <span class="o">*</span> <span class="mi">2</span>
<span class="nx">results</span> <span class="o">&lt;-</span> <span class="nx">j</span> <span class="o">*</span> <span class="mi">2</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -92,8 +88,7 @@ simulate an expensive task.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -106,11 +101,9 @@ channels for this.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">const</span> <span class="nx">numJobs</span> <span class="p">=</span> <span class="mi">5</span>
<span class="kd">const</span> <span class="nx">numJobs</span> <span class="p">=</span> <span class="mi">5</span> </span></span><span class="line"><span class="cl"> <span class="nx">jobs</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">numJobs</span><span class="p">)</span>
<span class="nx">jobs</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">numJobs</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">results</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">numJobs</span><span class="p">)</span></span></span></code></pre>
<span class="nx">results</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">(</span><span class="kd">chan</span> <span class="kt">int</span><span class="p">,</span> <span class="nx">numJobs</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -122,11 +115,9 @@ because there are no jobs yet.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">w</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">w</span> <span class="o">&lt;=</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">w</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">w</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">w</span> <span class="o">&lt;=</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">w</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="nx">jobs</span><span class="p">,</span> <span class="nx">results</span><span class="p">)</span>
<span class="k">go</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="nx">jobs</span><span class="p">,</span> <span class="nx">results</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -138,12 +129,10 @@ channel to indicate that&rsquo;s all the work we have.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;=</span> <span class="nx">numJobs</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;=</span> <span class="nx">numJobs</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">jobs</span> <span class="o">&lt;-</span> <span class="nx">j</span>
<span class="nx">jobs</span> <span class="o">&lt;-</span> <span class="nx">j</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nb">close</span><span class="p">(</span><span class="nx">jobs</span><span class="p">)</span></span></span></code></pre>
<span class="nb">close</span><span class="p">(</span><span class="nx">jobs</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -157,12 +146,10 @@ goroutines is to use a <a href="waitgroups">WaitGroup</a>.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">a</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">a</span> <span class="o">&lt;=</span> <span class="nx">numJobs</span><span class="p">;</span> <span class="nx">a</span><span class="o">++</span> <span class="p">{</span>
<span class="k">for</span> <span class="nx">a</span> <span class="o">:=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">a</span> <span class="o">&lt;=</span> <span class="nx">numJobs</span><span class="p">;</span> <span class="nx">a</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="o">&lt;-</span><span class="nx">results</span>
<span class="o">&lt;-</span><span class="nx">results</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -180,18 +167,17 @@ there are 3 workers operating concurrently.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> time go run worker-pools.go
<span class="gp">$</span> time go run worker-pools.go </span></span><span class="line"><span class="cl"><span class="go">worker 1 started job 1
<span class="go">worker 1 started job 1 </span></span></span><span class="line"><span class="cl"><span class="go">worker 2 started job 2
</span><span class="go">worker 2 started job 2 </span></span></span><span class="line"><span class="cl"><span class="go">worker 3 started job 3
</span><span class="go">worker 3 started job 3 </span></span></span><span class="line"><span class="cl"><span class="go">worker 1 finished job 1
</span><span class="go">worker 1 finished job 1 </span></span></span><span class="line"><span class="cl"><span class="go">worker 1 started job 4
</span><span class="go">worker 1 started job 4 </span></span></span><span class="line"><span class="cl"><span class="go">worker 2 finished job 2
</span><span class="go">worker 2 finished job 2 </span></span></span><span class="line"><span class="cl"><span class="go">worker 2 started job 5
</span><span class="go">worker 2 started job 5 </span></span></span><span class="line"><span class="cl"><span class="go">worker 3 finished job 3
</span><span class="go">worker 3 finished job 3 </span></span></span><span class="line"><span class="cl"><span class="go">worker 1 finished job 4
</span><span class="go">worker 1 finished job 4 </span></span></span><span class="line"><span class="cl"><span class="go">worker 2 finished job 5</span></span></span></code></pre>
</span><span class="go">worker 2 finished job 5</span></pre>
</td> </td>
</tr> </tr>
@ -201,7 +187,7 @@ there are 3 workers operating concurrently.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="go">real 0m2.358s</span></pre> <pre class="chroma"><code><span class="line"><span class="cl"><span class="go">real 0m2.358s</span></span></span></code></pre>
</td> </td>
</tr> </tr>

109
public/writing-files generated
View File

@ -43,8 +43,7 @@ ones we saw earlier for reading.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/Y12O-L_zFS1"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/Y12O-L_zFS1"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,12 +53,11 @@ ones we saw earlier for reading.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;bufio&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;bufio&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="s">&#34;os&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;os&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -69,12 +67,11 @@ ones we saw earlier for reading.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">check</span><span class="p">(</span><span class="nx">e</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">check</span><span class="p">(</span><span class="nx">e</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">e</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -84,8 +81,7 @@ ones we saw earlier for reading.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -97,11 +93,9 @@ bytes) into a file.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">d1</span> <span class="o">:=</span> <span class="p">[]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;hello\ngo\n&#34;</span><span class="p">)</span>
<span class="nx">d1</span> <span class="o">:=</span> <span class="p">[]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;hello\ngo\n&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">WriteFile</span><span class="p">(</span><span class="s">&#34;/tmp/dat1&#34;</span><span class="p">,</span> <span class="nx">d1</span><span class="p">,</span> <span class="mo">0644</span><span class="p">)</span>
<span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">WriteFile</span><span class="p">(</span><span class="s">&#34;/tmp/dat1&#34;</span><span class="p">,</span> <span class="nx">d1</span><span class="p">,</span> <span class="mo">0644</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -112,10 +106,8 @@ bytes) into a file.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">f</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Create</span><span class="p">(</span><span class="s">&#34;/tmp/dat2&#34;</span><span class="p">)</span>
<span class="nx">f</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">os</span><span class="p">.</span><span class="nf">Create</span><span class="p">(</span><span class="s">&#34;/tmp/dat2&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></span></span></code></pre>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -127,9 +119,7 @@ after opening a file.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">defer</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span></span></span></code></pre>
<span class="k">defer</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -140,12 +130,10 @@ after opening a file.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">d2</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">byte</span><span class="p">{</span><span class="mi">115</span><span class="p">,</span> <span class="mi">111</span><span class="p">,</span> <span class="mi">109</span><span class="p">,</span> <span class="mi">101</span><span class="p">,</span> <span class="mi">10</span><span class="p">}</span>
<span class="nx">d2</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">byte</span><span class="p">{</span><span class="mi">115</span><span class="p">,</span> <span class="mi">111</span><span class="p">,</span> <span class="mi">109</span><span class="p">,</span> <span class="mi">101</span><span class="p">,</span> <span class="mi">10</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">n2</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Write</span><span class="p">(</span><span class="nx">d2</span><span class="p">)</span>
<span class="nx">n2</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Write</span><span class="p">(</span><span class="nx">d2</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;wrote %d bytes\n&#34;</span><span class="p">,</span> <span class="nx">n2</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;wrote %d bytes\n&#34;</span><span class="p">,</span> <span class="nx">n2</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -156,11 +144,9 @@ after opening a file.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">n3</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">WriteString</span><span class="p">(</span><span class="s">&#34;writes\n&#34;</span><span class="p">)</span>
<span class="nx">n3</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">f</span><span class="p">.</span><span class="nf">WriteString</span><span class="p">(</span><span class="s">&#34;writes\n&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;wrote %d bytes\n&#34;</span><span class="p">,</span> <span class="nx">n3</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;wrote %d bytes\n&#34;</span><span class="p">,</span> <span class="nx">n3</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -171,9 +157,7 @@ after opening a file.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">f</span><span class="p">.</span><span class="nf">Sync</span><span class="p">()</span></span></span></code></pre>
<span class="nx">f</span><span class="p">.</span><span class="nf">Sync</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -185,12 +169,10 @@ to the buffered readers we saw earlier.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">w</span> <span class="o">:=</span> <span class="nx">bufio</span><span class="p">.</span><span class="nf">NewWriter</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span>
<span class="nx">w</span> <span class="o">:=</span> <span class="nx">bufio</span><span class="p">.</span><span class="nf">NewWriter</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">n4</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">w</span><span class="p">.</span><span class="nf">WriteString</span><span class="p">(</span><span class="s">&#34;buffered\n&#34;</span><span class="p">)</span>
<span class="nx">n4</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">w</span><span class="p">.</span><span class="nf">WriteString</span><span class="p">(</span><span class="s">&#34;buffered\n&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;wrote %d bytes\n&#34;</span><span class="p">,</span> <span class="nx">n4</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;wrote %d bytes\n&#34;</span><span class="p">,</span> <span class="nx">n4</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -202,9 +184,7 @@ been applied to the underlying writer.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">w</span><span class="p">.</span><span class="nf">Flush</span><span class="p">()</span></span></span></code></pre>
<span class="nx">w</span><span class="p">.</span><span class="nf">Flush</span><span class="p">()</span>
</pre>
</td> </td>
</tr> </tr>
@ -214,8 +194,7 @@ been applied to the underlying writer.</p>
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="p">}</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -230,11 +209,10 @@ been applied to the underlying writer.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run writing-files.go
<span class="gp">$</span> go run writing-files.go </span></span><span class="line"><span class="cl"><span class="go">wrote 5 bytes
<span class="go">wrote 5 bytes </span></span></span><span class="line"><span class="cl"><span class="go">wrote 7 bytes
</span><span class="go">wrote 7 bytes </span></span></span><span class="line"><span class="cl"><span class="go">wrote 9 bytes</span></span></span></code></pre>
</span><span class="go">wrote 9 bytes</span></pre>
</td> </td>
</tr> </tr>
@ -245,14 +223,13 @@ been applied to the underlying writer.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> cat /tmp/dat1
<span class="gp">$</span> cat /tmp/dat1 </span></span><span class="line"><span class="cl"><span class="go">hello
<span class="go">hello </span></span></span><span class="line"><span class="cl"><span class="go">go
</span><span class="go">go </span></span></span><span class="line"><span class="cl"><span class="go"></span><span class="gp">$</span> cat /tmp/dat2
</span><span class="go"></span><span class="gp">$</span> cat /tmp/dat2 </span></span><span class="line"><span class="cl"><span class="go">some
<span class="go">some </span></span></span><span class="line"><span class="cl"><span class="go">writes
</span><span class="go">writes </span></span></span><span class="line"><span class="cl"><span class="go">buffered</span></span></span></code></pre>
</span><span class="go">buffered</span></pre>
</td> </td>
</tr> </tr>

149
public/xml generated
View File

@ -43,8 +43,7 @@ formats with the <code>encoding.xml</code> package.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<a href="https://go.dev/play/p/OVq7kNMk0GR"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" /> <a href="https://go.dev/play/p/OVq7kNMk0GR"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -54,11 +53,10 @@ formats with the <code>encoding.xml</code> package.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
<span class="s">&#34;encoding/xml&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;encoding/xml&#34;</span>
<span class="s">&#34;fmt&#34;</span> </span></span><span class="line"><span class="cl"> <span class="s">&#34;fmt&#34;</span>
<span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -75,14 +73,12 @@ the name of the XML element representing this struct;
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">type</span> <span class="nx">Plant</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">Plant</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">XMLName</span> <span class="nx">xml</span><span class="p">.</span><span class="nx">Name</span> <span class="s">`xml:&#34;plant&#34;`</span>
<span class="nx">XMLName</span> <span class="nx">xml</span><span class="p">.</span><span class="nx">Name</span> <span class="s">`xml:&#34;plant&#34;`</span> </span></span><span class="line"><span class="cl"> <span class="nx">Id</span> <span class="kt">int</span> <span class="s">`xml:&#34;id,attr&#34;`</span>
<span class="nx">Id</span> <span class="kt">int</span> <span class="s">`xml:&#34;id,attr&#34;`</span> </span></span><span class="line"><span class="cl"> <span class="nx">Name</span> <span class="kt">string</span> <span class="s">`xml:&#34;name&#34;`</span>
<span class="nx">Name</span> <span class="kt">string</span> <span class="s">`xml:&#34;name&#34;`</span> </span></span><span class="line"><span class="cl"> <span class="nx">Origin</span> <span class="p">[]</span><span class="kt">string</span> <span class="s">`xml:&#34;origin&#34;`</span>
<span class="nx">Origin</span> <span class="p">[]</span><span class="kt">string</span> <span class="s">`xml:&#34;origin&#34;`</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -92,11 +88,10 @@ the name of the XML element representing this struct;
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="nx">Plant</span><span class="p">)</span> <span class="nf">String</span><span class="p">()</span> <span class="kt">string</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="nx">Plant</span><span class="p">)</span> <span class="nf">String</span><span class="p">()</span> <span class="kt">string</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;Plant id=%v, name=%v, origin=%v&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Sprintf</span><span class="p">(</span><span class="s">&#34;Plant id=%v, name=%v, origin=%v&#34;</span><span class="p">,</span>
<span class="nx">p</span><span class="p">.</span><span class="nx">Id</span><span class="p">,</span> <span class="nx">p</span><span class="p">.</span><span class="nx">Name</span><span class="p">,</span> <span class="nx">p</span><span class="p">.</span><span class="nx">Origin</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">p</span><span class="p">.</span><span class="nx">Id</span><span class="p">,</span> <span class="nx">p</span><span class="p">.</span><span class="nx">Name</span><span class="p">,</span> <span class="nx">p</span><span class="p">.</span><span class="nx">Origin</span><span class="p">)</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -106,10 +101,9 @@ the name of the XML element representing this struct;
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <pre class="chroma"><code><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">coffee</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">Plant</span><span class="p">{</span><span class="nx">Id</span><span class="p">:</span> <span class="mi">27</span><span class="p">,</span> <span class="nx">Name</span><span class="p">:</span> <span class="s">&#34;Coffee&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">coffee</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">Plant</span><span class="p">{</span><span class="nx">Id</span><span class="p">:</span> <span class="mi">27</span><span class="p">,</span> <span class="nx">Name</span><span class="p">:</span> <span class="s">&#34;Coffee&#34;</span><span class="p">}</span>
<span class="nx">coffee</span><span class="p">.</span><span class="nx">Origin</span> <span class="p">=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;Ethiopia&#34;</span><span class="p">,</span> <span class="s">&#34;Brazil&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">coffee</span><span class="p">.</span><span class="nx">Origin</span> <span class="p">=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;Ethiopia&#34;</span><span class="p">,</span> <span class="s">&#34;Brazil&#34;</span><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -122,10 +116,8 @@ human-readable output.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">out</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">xml</span><span class="p">.</span><span class="nf">MarshalIndent</span><span class="p">(</span><span class="nx">coffee</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">)</span>
<span class="nx">out</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">xml</span><span class="p">.</span><span class="nf">MarshalIndent</span><span class="p">(</span><span class="nx">coffee</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -137,9 +129,7 @@ it explicitly.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">xml</span><span class="p">.</span><span class="nx">Header</span> <span class="o">+</span> <span class="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">xml</span><span class="p">.</span><span class="nx">Header</span> <span class="o">+</span> <span class="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span>
</pre>
</td> </td>
</tr> </tr>
@ -153,13 +143,11 @@ will be returned.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">var</span> <span class="nx">p</span> <span class="nx">Plant</span>
<span class="kd">var</span> <span class="nx">p</span> <span class="nx">Plant</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">xml</span><span class="p">.</span><span class="nf">Unmarshal</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">p</span><span class="p">);</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
<span class="k">if</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">xml</span><span class="p">.</span><span class="nf">Unmarshal</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">p</span><span class="p">);</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">p</span><span class="p">)</span></span></span></code></pre>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">p</span><span class="p">)</span>
</pre>
</td> </td>
</tr> </tr>
@ -169,9 +157,8 @@ will be returned.</p>
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">tomato</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">Plant</span><span class="p">{</span><span class="nx">Id</span><span class="p">:</span> <span class="mi">81</span><span class="p">,</span> <span class="nx">Name</span><span class="p">:</span> <span class="s">&#34;Tomato&#34;</span><span class="p">}</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">tomato</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">Plant</span><span class="p">{</span><span class="nx">Id</span><span class="p">:</span> <span class="mi">81</span><span class="p">,</span> <span class="nx">Name</span><span class="p">:</span> <span class="s">&#34;Tomato&#34;</span><span class="p">}</span>
<span class="nx">tomato</span><span class="p">.</span><span class="nx">Origin</span> <span class="p">=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;Mexico&#34;</span><span class="p">,</span> <span class="s">&#34;California&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">tomato</span><span class="p">.</span><span class="nx">Origin</span> <span class="p">=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;Mexico&#34;</span><span class="p">,</span> <span class="s">&#34;California&#34;</span><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -183,12 +170,10 @@ to nest all <code>plant</code>s under <code>&lt;parent&gt;&lt;child&gt;...</code
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="kd">type</span> <span class="nx">Nesting</span> <span class="kd">struct</span> <span class="p">{</span>
<span class="kd">type</span> <span class="nx">Nesting</span> <span class="kd">struct</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">XMLName</span> <span class="nx">xml</span><span class="p">.</span><span class="nx">Name</span> <span class="s">`xml:&#34;nesting&#34;`</span>
<span class="nx">XMLName</span> <span class="nx">xml</span><span class="p">.</span><span class="nx">Name</span> <span class="s">`xml:&#34;nesting&#34;`</span> </span></span><span class="line"><span class="cl"> <span class="nx">Plants</span> <span class="p">[]</span><span class="o">*</span><span class="nx">Plant</span> <span class="s">`xml:&#34;parent&gt;child&gt;plant&#34;`</span>
<span class="nx">Plants</span> <span class="p">[]</span><span class="o">*</span><span class="nx">Plant</span> <span class="s">`xml:&#34;parent&gt;child&gt;plant&#34;`</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
<span class="p">}</span>
</pre>
</td> </td>
</tr> </tr>
@ -198,9 +183,8 @@ to nest all <code>plant</code>s under <code>&lt;parent&gt;&lt;child&gt;...</code
</td> </td>
<td class="code leading"> <td class="code leading">
<pre class="chroma"> <span class="nx">nesting</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">Nesting</span><span class="p">{}</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">nesting</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="nx">Nesting</span><span class="p">{}</span>
<span class="nx">nesting</span><span class="p">.</span><span class="nx">Plants</span> <span class="p">=</span> <span class="p">[]</span><span class="o">*</span><span class="nx">Plant</span><span class="p">{</span><span class="nx">coffee</span><span class="p">,</span> <span class="nx">tomato</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="nx">nesting</span><span class="p">.</span><span class="nx">Plants</span> <span class="p">=</span> <span class="p">[]</span><span class="o">*</span><span class="nx">Plant</span><span class="p">{</span><span class="nx">coffee</span><span class="p">,</span> <span class="nx">tomato</span><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -210,10 +194,9 @@ to nest all <code>plant</code>s under <code>&lt;parent&gt;&lt;child&gt;...</code
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"> <span class="nx">out</span><span class="p">,</span> <span class="nx">_</span> <span class="p">=</span> <span class="nx">xml</span><span class="p">.</span><span class="nf">MarshalIndent</span><span class="p">(</span><span class="nx">nesting</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">)</span> <pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">out</span><span class="p">,</span> <span class="nx">_</span> <span class="p">=</span> <span class="nx">xml</span><span class="p">.</span><span class="nf">MarshalIndent</span><span class="p">(</span><span class="nx">nesting</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">,</span> <span class="s">&#34; &#34;</span><span class="p">)</span>
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span>
<span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</pre>
</td> </td>
</tr> </tr>
@ -227,35 +210,35 @@ to nest all <code>plant</code>s under <code>&lt;parent&gt;&lt;child&gt;...</code
</td> </td>
<td class="code"> <td class="code">
<pre class="chroma"><span class="gp">$</span> go run xml.go <pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run xml.go
<span class="go"> &lt;plant id=&#34;27&#34;&gt; </span></span><span class="line"><span class="cl"><span class="go"> &lt;plant id=&#34;27&#34;&gt;
</span><span class="go"> &lt;name&gt;Coffee&lt;/name&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;name&gt;Coffee&lt;/name&gt;
</span><span class="go"> &lt;origin&gt;Ethiopia&lt;/origin&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;origin&gt;Ethiopia&lt;/origin&gt;
</span><span class="go"> &lt;origin&gt;Brazil&lt;/origin&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;origin&gt;Brazil&lt;/origin&gt;
</span><span class="go"> &lt;/plant&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;/plant&gt;
</span><span class="go">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt; </span></span></span><span class="line"><span class="cl"><span class="go">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;
</span><span class="go"> &lt;plant id=&#34;27&#34;&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;plant id=&#34;27&#34;&gt;
</span><span class="go"> &lt;name&gt;Coffee&lt;/name&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;name&gt;Coffee&lt;/name&gt;
</span><span class="go"> &lt;origin&gt;Ethiopia&lt;/origin&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;origin&gt;Ethiopia&lt;/origin&gt;
</span><span class="go"> &lt;origin&gt;Brazil&lt;/origin&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;origin&gt;Brazil&lt;/origin&gt;
</span><span class="go"> &lt;/plant&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;/plant&gt;
</span><span class="go">Plant id=27, name=Coffee, origin=[Ethiopia Brazil] </span></span></span><span class="line"><span class="cl"><span class="go">Plant id=27, name=Coffee, origin=[Ethiopia Brazil]
</span><span class="go"> &lt;nesting&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;nesting&gt;
</span><span class="go"> &lt;parent&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;parent&gt;
</span><span class="go"> &lt;child&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;child&gt;
</span><span class="go"> &lt;plant id=&#34;27&#34;&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;plant id=&#34;27&#34;&gt;
</span><span class="go"> &lt;name&gt;Coffee&lt;/name&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;name&gt;Coffee&lt;/name&gt;
</span><span class="go"> &lt;origin&gt;Ethiopia&lt;/origin&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;origin&gt;Ethiopia&lt;/origin&gt;
</span><span class="go"> &lt;origin&gt;Brazil&lt;/origin&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;origin&gt;Brazil&lt;/origin&gt;
</span><span class="go"> &lt;/plant&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;/plant&gt;
</span><span class="go"> &lt;plant id=&#34;81&#34;&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;plant id=&#34;81&#34;&gt;
</span><span class="go"> &lt;name&gt;Tomato&lt;/name&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;name&gt;Tomato&lt;/name&gt;
</span><span class="go"> &lt;origin&gt;Mexico&lt;/origin&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;origin&gt;Mexico&lt;/origin&gt;
</span><span class="go"> &lt;origin&gt;California&lt;/origin&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;origin&gt;California&lt;/origin&gt;
</span><span class="go"> &lt;/plant&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;/plant&gt;
</span><span class="go"> &lt;/child&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;/child&gt;
</span><span class="go"> &lt;/parent&gt; </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;/parent&gt;
</span><span class="go"> &lt;/nesting&gt;</span></pre> </span></span></span><span class="line"><span class="cl"><span class="go"> &lt;/nesting&gt;</span></span></span></code></pre>
</td> </td>
</tr> </tr>

View File

@ -12,10 +12,10 @@ import (
"strings" "strings"
"text/template" "text/template"
"github.com/alecthomas/chroma" "github.com/alecthomas/chroma/v2"
"github.com/alecthomas/chroma/formatters/html" "github.com/alecthomas/chroma/v2/formatters/html"
"github.com/alecthomas/chroma/lexers" "github.com/alecthomas/chroma/v2/lexers"
"github.com/alecthomas/chroma/styles" "github.com/alecthomas/chroma/v2/styles"
"github.com/russross/blackfriday/v2" "github.com/russross/blackfriday/v2"
) )
@ -222,6 +222,12 @@ func parseAndRenderSegs(sourcePath string) ([]*Seg, string) {
seg.DocsRendered = markdown(seg.Docs) seg.DocsRendered = markdown(seg.Docs)
} }
if seg.Code != "" { if seg.Code != "" {
// TODO: with the update to Chroma 2.8.0 I had to change this, because the
// new chromoa would render this leading newline for all code segments,
// which would then be shifted down compared to the doc segments. Maybe
// the parsing should be modified to not produce this \n in the first
// place?
seg.Code = strings.TrimLeft(seg.Code, "\n")
seg.CodeRendered = chromaFormat(seg.Code, sourcePath) seg.CodeRendered = chromaFormat(seg.Code, sourcePath)
// adding the content to the js code for copying to the clipboard // adding the content to the js code for copying to the clipboard
@ -353,30 +359,32 @@ var SimpleShellOutputLexer = chroma.MustNewLexer(
Filenames: []string{"*.sh"}, Filenames: []string{"*.sh"},
MimeTypes: []string{}, MimeTypes: []string{},
}, },
chroma.Rules{ func() chroma.Rules {
"root": { return chroma.Rules{
// $ or > triggers the start of prompt formatting "root": {
{`^\$`, chroma.GenericPrompt, chroma.Push("prompt")}, // $ or > triggers the start of prompt formatting
{`^>`, chroma.GenericPrompt, chroma.Push("prompt")}, {`^\$`, chroma.GenericPrompt, chroma.Push("prompt")},
{`^>`, chroma.GenericPrompt, chroma.Push("prompt")},
// empty lines are just text // empty lines are just text
{`^$\n`, chroma.Text, nil}, {`^$\n`, chroma.Text, nil},
// otherwise its all output // otherwise its all output
{`[^\n]+$\n?`, chroma.GenericOutput, nil}, {`[^\n]+$\n?`, chroma.GenericOutput, nil},
}, },
"prompt": { "prompt": {
// when we find newline, do output formatting rules // when we find newline, do output formatting rules
{`\n`, chroma.Text, chroma.Push("output")}, {`\n`, chroma.Text, chroma.Push("output")},
// otherwise its all text // otherwise its all text
{`[^\n]+$`, chroma.Text, nil}, {`[^\n]+$`, chroma.Text, nil},
}, },
"output": { "output": {
// sometimes there isn't output so we go right back to prompt // sometimes there isn't output so we go right back to prompt
{`^\$`, chroma.GenericPrompt, chroma.Pop(1)}, {`^\$`, chroma.GenericPrompt, chroma.Pop(1)},
{`^>`, chroma.GenericPrompt, chroma.Pop(1)}, {`^>`, chroma.GenericPrompt, chroma.Pop(1)},
// otherwise its all output // otherwise its all output
{`[^\n]+$\n?`, chroma.GenericOutput, nil}, {`[^\n]+$\n?`, chroma.GenericOutput, nil},
}, },
}
}, },
) )