Update chroma from v0.8 to v2 (v2.8.0) and fix up formatting
This commit is contained in:
parent
d51586e6bf
commit
4dc83f3ccc
5
go.mod
5
go.mod
@ -3,7 +3,7 @@ module github.com/mmcgrana/gobyexample
|
||||
go 1.21
|
||||
|
||||
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/config v1.7.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/sts v1.7.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.2.0 // indirect
|
||||
github.com/dlclark/regexp2 v1.10.0 // indirect
|
||||
)
|
||||
|
37
go.sum
37
go.sum
@ -1,12 +1,9 @@
|
||||
github.com/alecthomas/assert v0.0.0-20170929043011-405dbfeb8e38 h1:smF2tmSOzy2Mm+0dGI2AIUHY+w0BUc+4tn40djz7+6U=
|
||||
github.com/alecthomas/assert v0.0.0-20170929043011-405dbfeb8e38/go.mod h1:r7bzyVFMNntcxPZXK3/+KdruV1H5KSlyVY0gc+NgInI=
|
||||
github.com/alecthomas/chroma v0.8.2 h1:x3zkuE2lUk/RIekyAJ3XRqSCP4zwWDfcw/YJCuCAACg=
|
||||
github.com/alecthomas/chroma v0.8.2/go.mod h1:sko8vR34/90zvl5QdcUdvzL3J8NKjAUx9va9jPuFNoM=
|
||||
github.com/alecthomas/colour v0.0.0-20160524082231-60882d9e2721 h1:JHZL0hZKJ1VENNfmXvHbgYlbUOvpzYzvy2aZU5gXVeo=
|
||||
github.com/alecthomas/colour v0.0.0-20160524082231-60882d9e2721/go.mod h1:QO9JBoKquHd+jz9nshCh40fOfO+JzsoXy8qTHF68zU0=
|
||||
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/alecthomas/assert/v2 v2.2.1 h1:XivOgYcduV98QCahG8T5XTezV5bylXe+lBxLG2K2ink=
|
||||
github.com/alecthomas/assert/v2 v2.2.1/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ=
|
||||
github.com/alecthomas/chroma/v2 v2.8.0 h1:w9WJUjFFmHHB2e8mRpL9jjy3alYDlU0QLDezj1xE264=
|
||||
github.com/alecthomas/chroma/v2 v2.8.0/go.mod h1:yrkMI9807G1ROx13fhe1v6PN2DDeaR73L3d+1nmYQtw=
|
||||
github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk=
|
||||
github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
|
||||
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/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/smithy-go v1.8.0 h1:AEwwwXQZtUwP5Mz506FeXXrKBe0jA8gVM+1gEcSRooc=
|
||||
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.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dlclark/regexp2 v1.2.0 h1:8sAhBGEM0dRWogWqWyQeIJnxjWO6oIjl8FKqREDsGfk=
|
||||
github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
|
||||
github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0=
|
||||
github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
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/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/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/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/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/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/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
66
public/arrays
generated
66
public/arrays
generated
@ -45,8 +45,7 @@ scenarios.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,8 +55,7 @@ scenarios.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -67,8 +65,7 @@ scenarios.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -82,10 +79,8 @@ zero-valued, which for <code>int</code>s means <code>0</code>s.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"emp:"</span><span class="p">,</span> <span class="nx">a</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"emp:"</span><span class="p">,</span> <span class="nx">a</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -98,11 +93,9 @@ zero-valued, which for <code>int</code>s means <code>0</code>s.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"set:"</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">"get:"</span><span class="p">,</span> <span class="nx">a</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
|
||||
</pre>
|
||||
<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></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">"set:"</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">"get:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -113,9 +106,7 @@ zero-valued, which for <code>int</code>s means <code>0</code>s.</p>
|
||||
</td>
|
||||
<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">"len:"</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">a</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"len:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -127,10 +118,8 @@ in one line.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"dcl:"</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"dcl:"</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -143,16 +132,14 @@ structures.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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"><</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">j</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="p"><</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="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="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">"2d: "</span><span class="p">,</span> <span class="nx">twoD</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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"><</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"><</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <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">"2d: "</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -168,14 +155,13 @@ when printed with <code>fmt.Println</code>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run arrays.go
|
||||
<span class="go">emp: [0 0 0 0 0]
|
||||
</span><span class="go">set: [0 0 0 0 100]
|
||||
</span><span class="go">get: 100
|
||||
</span><span class="go">len: 5
|
||||
</span><span class="go">dcl: [1 2 3 4 5]
|
||||
</span><span class="go">2d: [[0 1 2] [1 2 3]]</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><span class="go">2d: [[0 1 2] [1 2 3]]</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
62
public/atomic-counters
generated
62
public/atomic-counters
generated
@ -47,8 +47,7 @@ counters</em> accessed by multiple goroutines.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -58,12 +57,11 @@ counters</em> accessed by multiple goroutines.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"sync"</span>
|
||||
<span class="s">"sync/atomic"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"sync"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"sync/atomic"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -73,8 +71,7 @@ counters</em> accessed by multiple goroutines.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -86,9 +83,7 @@ counters</em> accessed by multiple goroutines.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">var</span> <span class="nx">ops</span> <span class="kt">uint64</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -100,9 +95,7 @@ to finish their work.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -114,10 +107,8 @@ counter exactly 1000 times.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><</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="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>
|
||||
<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"><</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -131,9 +122,8 @@ address of our <code>ops</code> counter with the
|
||||
</td>
|
||||
<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>
|
||||
<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"><</span> <span class="mi">1000</span><span class="p">;</span> <span class="nx">c</span><span class="o">++</span> <span class="p">{</span>
|
||||
</pre>
|
||||
<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><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"><</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -143,12 +133,11 @@ address of our <code>ops</code> counter with the
|
||||
</td>
|
||||
<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">&</span><span class="nx">ops</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nx">wg</span><span class="p">.</span><span class="nf">Done</span><span class="p">()</span>
|
||||
<span class="p">}()</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">&</span><span class="nx">ops</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><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></span><span class="line"><span class="cl"> <span class="p">}()</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -159,9 +148,7 @@ address of our <code>ops</code> counter with the
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">wg</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -176,10 +163,8 @@ also possible, using functions like
|
||||
</td>
|
||||
<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="s">"ops:"</span><span class="p">,</span> <span class="nx">ops</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"ops:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -199,9 +184,8 @@ when running with the <code>-race</code> flag.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run atomic-counters.go
|
||||
<span class="go">ops: 50000</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
57
public/base64-encoding
generated
57
public/base64-encoding
generated
@ -43,8 +43,7 @@ encoding/decoding</a>.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -57,12 +56,10 @@ save us some space below.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="nx">b64</span> <span class="s">"encoding/base64"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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">"encoding/base64"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -72,8 +69,7 @@ save us some space below.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,9 +80,7 @@ save us some space below.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">data</span> <span class="o">:=</span> <span class="s">"abc123!?$*&()'-=@~"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">data</span> <span class="o">:=</span> <span class="s">"abc123!?$*&()'-=@~"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -100,10 +94,8 @@ convert our <code>string</code> to that type.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -116,11 +108,9 @@ well-formed.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
</pre>
|
||||
<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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -132,13 +122,11 @@ format.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">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">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="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -155,10 +143,9 @@ but they both decode to the original string as desired.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run base64-encoding.go
|
||||
<span class="go">YWJjMTIzIT8kKiYoKSctPUB+
|
||||
</span><span class="go">abc123!?$*&()'-=@~</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run base64-encoding.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">YWJjMTIzIT8kKiYoKSctPUB+
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">abc123!?$*&()'-=@~</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -168,8 +155,8 @@ but they both decode to the original string as desired.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="go">YWJjMTIzIT8kKiYoKSctPUB-
|
||||
</span><span class="go">abc123!?$*&()'-=@~</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="go">YWJjMTIzIT8kKiYoKSctPUB-
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">abc123!?$*&()'-=@~</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
33
public/channel-buffering
generated
33
public/channel-buffering
generated
@ -47,8 +47,7 @@ those values.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -58,8 +57,7 @@ those values.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,8 +67,7 @@ those values.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -82,9 +79,7 @@ those values.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,10 +92,8 @@ concurrent receive.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">messages</span> <span class="o"><-</span> <span class="s">"buffered"</span>
|
||||
<span class="nx">messages</span> <span class="o"><-</span> <span class="s">"channel"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">messages</span> <span class="o"><-</span> <span class="s">"buffered"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="nx">messages</span> <span class="o"><-</span> <span class="s">"channel"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -111,11 +104,9 @@ concurrent receive.</p>
|
||||
</td>
|
||||
<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="o"><-</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"><-</span><span class="nx">messages</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><-</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"><-</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -129,9 +120,9 @@ concurrent receive.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run channel-buffering.go
|
||||
<span class="go">buffered
|
||||
</span><span class="go">channel</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run channel-buffering.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">buffered
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">channel</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
43
public/channel-directions
generated
43
public/channel-directions
generated
@ -45,8 +45,7 @@ the program.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,8 +55,7 @@ the program.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -70,11 +68,9 @@ receive on this channel.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><-</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="nx">pings</span> <span class="o"><-</span> <span class="nx">msg</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><-</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"><-</span> <span class="nx">msg</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -86,12 +82,10 @@ receive on this channel.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">func</span> <span class="nf">pong</span><span class="p">(</span><span class="nx">pings</span> <span class="o"><-</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"><-</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="nx">msg</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">pings</span>
|
||||
<span class="nx">pongs</span> <span class="o"><-</span> <span class="nx">msg</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><-</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"><-</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"><-</span><span class="nx">pings</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="nx">pongs</span> <span class="o"><-</span> <span class="nx">msg</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -101,14 +95,13 @@ receive on this channel.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><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 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">"passed message"</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="o"><-</span><span class="nx">pongs</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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><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></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></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">"passed message"</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></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"><-</span><span class="nx">pongs</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -122,8 +115,8 @@ receive on this channel.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run channel-directions.go
|
||||
<span class="go">passed message</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run channel-directions.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">passed message</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
47
public/channel-synchronization
generated
47
public/channel-synchronization
generated
@ -46,8 +46,7 @@ you may prefer to use a <a href="waitgroups">WaitGroup</a>.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -57,11 +56,10 @@ you may prefer to use a <a href="waitgroups">WaitGroup</a>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -74,12 +72,10 @@ goroutine that this function’s work is done.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="s">"working..."</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"done"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"working..."</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></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">"done"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -90,10 +86,8 @@ goroutine that this function’s work is done.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">done</span> <span class="o"><-</span> <span class="kc">true</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o"><-</span> <span class="kc">true</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -103,8 +97,7 @@ goroutine that this function’s work is done.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -116,10 +109,8 @@ notify on.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">go</span> <span class="nf">worker</span><span class="p">(</span><span class="nx">done</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -131,10 +122,8 @@ worker on the channel.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="o"><-</span><span class="nx">done</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="o"><-</span><span class="nx">done</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -148,8 +137,8 @@ worker on the channel.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run channel-synchronization.go
|
||||
<span class="go">working...done </span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run channel-synchronization.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">working...done </span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
30
public/channels
generated
30
public/channels
generated
@ -45,8 +45,7 @@ goroutine.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,8 +55,7 @@ goroutine.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -67,8 +65,7 @@ goroutine.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -80,9 +77,7 @@ Channels are typed by the values they convey.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -95,9 +90,7 @@ channel we made above, from a new goroutine.</p>
|
||||
</td>
|
||||
<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> <span class="nx">messages</span> <span class="o"><-</span> <span class="s">"ping"</span> <span class="p">}()</span>
|
||||
</pre>
|
||||
<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"><-</span> <span class="s">"ping"</span> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -110,11 +103,9 @@ we sent above and print it out.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">msg</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">messages</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 class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">msg</span> <span class="o">:=</span> <span class="o"><-</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -131,9 +122,8 @@ our channel.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run channels.go
|
||||
<span class="go">ping</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
78
public/closing-channels
generated
78
public/closing-channels
generated
@ -44,8 +44,7 @@ completion to the channel’s receivers.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,8 +54,7 @@ completion to the channel’s receivers.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -70,11 +68,9 @@ the worker we’ll <code>close</code> the <code>jobs</code> channel.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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">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>
|
||||
<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><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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -91,20 +87,18 @@ all our jobs.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="k">for</span> <span class="p">{</span>
|
||||
<span class="nx">j</span><span class="p">,</span> <span class="nx">more</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">jobs</span>
|
||||
<span class="k">if</span> <span class="nx">more</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">"received job"</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span>
|
||||
<span class="p">}</span> <span class="k">else</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">"received all jobs"</span><span class="p">)</span>
|
||||
<span class="nx">done</span> <span class="o"><-</span> <span class="kc">true</span>
|
||||
<span class="k">return</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}()</span>
|
||||
</pre>
|
||||
<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><span class="line"><span class="cl"> <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"><-</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></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">"received job"</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></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">"received all jobs"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o"><-</span> <span class="kc">true</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">return</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -116,14 +110,12 @@ channel, then closes it.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><=</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="nx">jobs</span> <span class="o"><-</span> <span class="nx">j</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"sent job"</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nb">close</span><span class="p">(</span><span class="nx">jobs</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">"sent all jobs"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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"><=</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"><-</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">"sent job"</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><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><span class="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">"sent all jobs"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -136,10 +128,8 @@ we saw earlier.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="o"><-</span><span class="nx">done</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="o"><-</span><span class="nx">done</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -153,15 +143,15 @@ we saw earlier.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run closing-channels.go
|
||||
<span class="go">sent job 1
|
||||
</span><span class="go">received job 1
|
||||
</span><span class="go">sent job 2
|
||||
</span><span class="go">received job 2
|
||||
</span><span class="go">sent job 3
|
||||
</span><span class="go">received job 3
|
||||
</span><span class="go">sent all jobs
|
||||
</span><span class="go">received all jobs</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run closing-channels.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">sent job 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">received job 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">sent job 2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">received job 2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">sent job 3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">received job 3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">sent all jobs
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">received all jobs</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
55
public/closures
generated
55
public/closures
generated
@ -45,8 +45,7 @@ a function inline without having to name it.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,8 +55,7 @@ a function inline without having to name it.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -71,15 +69,13 @@ form a closure.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">i</span> <span class="o">:=</span> <span class="mi">0</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 class="nx">i</span><span class="o">++</span>
|
||||
<span class="k">return</span> <span class="nx">i</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -89,8 +85,7 @@ form a closure.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -104,9 +99,7 @@ we call <code>nextInt</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">nextInt</span> <span class="o">:=</span> <span class="nf">intSeq</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -118,11 +111,9 @@ a few times.</p>
|
||||
</td>
|
||||
<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="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 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>
|
||||
<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></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><span class="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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -134,11 +125,9 @@ particular function, create and test a new one.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">newInts</span> <span class="o">:=</span> <span class="nf">intSeq</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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -152,11 +141,11 @@ particular function, create and test a new one.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run closures.go
|
||||
<span class="go">1
|
||||
</span><span class="go">2
|
||||
</span><span class="go">3
|
||||
</span><span class="go">1</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run closures.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
45
public/command-line-arguments
generated
45
public/command-line-arguments
generated
@ -45,8 +45,7 @@ For example, <code>go run hello.go</code> uses <code>run</code> and
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,11 +55,10 @@ For example, <code>go run hello.go</code> uses <code>run</code> and
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -70,8 +68,7 @@ For example, <code>go run hello.go</code> uses <code>run</code> and
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -85,10 +82,8 @@ holds the arguments to the program.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -99,9 +94,7 @@ holds the arguments to the program.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -111,11 +104,10 @@ holds the arguments to the program.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -131,12 +123,11 @@ build a binary with <code>go build</code> first.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go build command-line-arguments.go
|
||||
<span class="gp">$</span> ./command-line-arguments a b c d
|
||||
<span class="go">[./command-line-arguments a b c d]
|
||||
</span><span class="go">[a b c d]
|
||||
</span><span class="go">c</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><span class="go">c</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
123
public/command-line-flags
generated
123
public/command-line-flags
generated
@ -45,8 +45,7 @@ command-line flag.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -59,12 +58,10 @@ implement our example command-line program.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"flag"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"flag"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -74,8 +71,7 @@ implement our example command-line program.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -91,9 +87,7 @@ we’ll see how to use this pointer below.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"word"</span><span class="p">,</span> <span class="s">"foo"</span><span class="p">,</span> <span class="s">"a string"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"word"</span><span class="p">,</span> <span class="s">"foo"</span><span class="p">,</span> <span class="s">"a string"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -105,10 +99,8 @@ similar approach to the <code>word</code> flag.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"numb"</span><span class="p">,</span> <span class="mi">42</span><span class="p">,</span> <span class="s">"an int"</span><span class="p">)</span>
|
||||
<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">"fork"</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">"a bool"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"numb"</span><span class="p">,</span> <span class="mi">42</span><span class="p">,</span> <span class="s">"an int"</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">"fork"</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">"a bool"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -122,10 +114,8 @@ declaration function.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">var</span> <span class="nx">svar</span> <span class="kt">string</span>
|
||||
<span class="nx">flag</span><span class="p">.</span><span class="nf">StringVar</span><span class="p">(</span><span class="o">&</span><span class="nx">svar</span><span class="p">,</span> <span class="s">"svar"</span><span class="p">,</span> <span class="s">"bar"</span><span class="p">,</span> <span class="s">"a string var"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">&</span><span class="nx">svar</span><span class="p">,</span> <span class="s">"svar"</span><span class="p">,</span> <span class="s">"bar"</span><span class="p">,</span> <span class="s">"a string var"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -137,9 +127,7 @@ to execute the command-line parsing.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">flag</span><span class="p">.</span><span class="nf">Parse</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -153,14 +141,12 @@ to get the actual option values.</p>
|
||||
</td>
|
||||
<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="s">"word:"</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">"numb:"</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">"fork:"</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">"svar:"</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">"tail:"</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="p">}</span>
|
||||
</pre>
|
||||
<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">"word:"</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">"numb:"</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">"fork:"</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">"svar:"</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">"tail:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -177,8 +163,7 @@ binary directly.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go build command-line-flags.go</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go build command-line-flags.go</span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -190,13 +175,12 @@ all flags.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./command-line-flags -word=opt -numb=7 -fork -svar=flag
|
||||
<span class="go">word: opt
|
||||
</span><span class="go">numb: 7
|
||||
</span><span class="go">fork: true
|
||||
</span><span class="go">svar: flag
|
||||
</span><span class="go">tail: []</span></pre>
|
||||
<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></span><span class="line"><span class="cl"><span class="go">word: opt
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">numb: 7
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">fork: true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">svar: flag
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">tail: []</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -208,13 +192,12 @@ their default values.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./command-line-flags -word=opt
|
||||
<span class="go">word: opt
|
||||
</span><span class="go">numb: 42
|
||||
</span><span class="go">fork: false
|
||||
</span><span class="go">svar: bar
|
||||
</span><span class="go">tail: []</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-flags -word=opt
|
||||
</span></span><span class="line"><span class="cl"><span class="go">word: opt
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">numb: 42
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">fork: false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">svar: bar
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">tail: []</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -226,11 +209,10 @@ any flags.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./command-line-flags -word=opt a1 a2 a3
|
||||
<span class="go">word: opt
|
||||
</span><span class="go">...
|
||||
</span><span class="go">tail: [a1 a2 a3]</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><span class="go">...
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">tail: [a1 a2 a3]</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -243,13 +225,12 @@ will be interpreted as positional arguments).</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./command-line-flags -word=opt a1 a2 a3 -numb=7
|
||||
<span class="go">word: opt
|
||||
</span><span class="go">numb: 42
|
||||
</span><span class="go">fork: false
|
||||
</span><span class="go">svar: bar
|
||||
</span><span class="go">tail: [a1 a2 a3 -numb=7]</span></pre>
|
||||
<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></span><span class="line"><span class="cl"><span class="go">word: opt
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">numb: 42
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">fork: false
|
||||
</span></span></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -261,13 +242,12 @@ generated help text for the command-line program.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./command-line-flags -h
|
||||
<span class="go">Usage of ./command-line-flags:
|
||||
</span><span class="go"> -fork=false: a bool
|
||||
</span><span class="go"> -numb=42: an int
|
||||
</span><span class="go"> -svar="bar": a string var
|
||||
</span><span class="go"> -word="foo": a string</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><span class="go"> -svar="bar": a string var
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> -word="foo": a string</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -280,11 +260,10 @@ and show the help text again.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./command-line-flags -wat
|
||||
<span class="go">flag provided but not defined: -wat
|
||||
</span><span class="go">Usage of ./command-line-flags:
|
||||
</span><span class="go">...</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
112
public/command-line-subcommands
generated
112
public/command-line-subcommands
generated
@ -47,8 +47,7 @@ subcommands that have their own flags.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -58,12 +57,11 @@ subcommands that have their own flags.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"flag"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"flag"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -73,8 +71,7 @@ subcommands that have their own flags.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -87,11 +84,9 @@ for this subcommand.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"foo"</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">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">"enable"</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">"enable"</span><span class="p">)</span>
|
||||
<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">"name"</span><span class="p">,</span> <span class="s">""</span><span class="p">,</span> <span class="s">"name"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"foo"</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">"enable"</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">"enable"</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">"name"</span><span class="p">,</span> <span class="s">""</span><span class="p">,</span> <span class="s">"name"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -103,10 +98,8 @@ supported flags.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"bar"</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">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">"level"</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s">"level"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"bar"</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">"level"</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s">"level"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -118,12 +111,10 @@ to the program.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><</span> <span class="mi">2</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">"expected 'foo' or 'bar' subcommands"</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 class="p">}</span>
|
||||
</pre>
|
||||
<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"><</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">"expected 'foo' or 'bar' subcommands"</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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -134,9 +125,7 @@ to the program.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -148,24 +137,22 @@ have access to trailing positional arguments.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">case</span> <span class="s">"foo"</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"subcommand 'foo'"</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">" enable:"</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">" name:"</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">" tail:"</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="k">case</span> <span class="s">"bar"</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"subcommand 'bar'"</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">" level:"</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">" tail:"</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="k">default</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">"expected 'foo' or 'bar' subcommands"</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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">case</span> <span class="s">"foo"</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></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">"subcommand 'foo'"</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">" enable:"</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">" name:"</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">" tail:"</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">"bar"</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></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">"subcommand 'bar'"</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">" level:"</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">" tail:"</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></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">"expected 'foo' or 'bar' subcommands"</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -179,7 +166,7 @@ have access to trailing positional arguments.</p>
|
||||
</td>
|
||||
<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>
|
||||
</tr>
|
||||
|
||||
@ -190,12 +177,11 @@ have access to trailing positional arguments.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./command-line-subcommands foo -enable -name=joe a1 a2
|
||||
<span class="go">subcommand 'foo'
|
||||
</span><span class="go"> enable: true
|
||||
</span><span class="go"> name: joe
|
||||
</span><span class="go"> tail: [a1 a2]</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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 'foo'
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> enable: true
|
||||
</span></span></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -206,11 +192,10 @@ have access to trailing positional arguments.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./command-line-subcommands bar -level 8 a1
|
||||
<span class="go">subcommand 'bar'
|
||||
</span><span class="go"> level: 8
|
||||
</span><span class="go"> tail: [a1]</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./command-line-subcommands bar -level 8 a1
|
||||
</span></span><span class="line"><span class="cl"><span class="go">subcommand 'bar'
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> level: 8
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> tail: [a1]</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -221,12 +206,11 @@ have access to trailing positional arguments.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./command-line-subcommands bar -enable a1
|
||||
<span class="go">flag provided but not defined: -enable
|
||||
</span><span class="go">Usage of bar:
|
||||
</span><span class="go"> -level int
|
||||
</span><span class="go"> level</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><span class="go">Usage of bar:
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> -level int
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> level</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
51
public/constants
generated
51
public/constants
generated
@ -43,8 +43,7 @@ and numeric values.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,11 +53,10 @@ and numeric values.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"math"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"math"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,9 +67,7 @@ and numeric values.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">const</span> <span class="nx">s</span> <span class="kt">string</span> <span class="p">=</span> <span class="s">"constant"</span>
|
||||
</pre>
|
||||
<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">"constant"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -81,9 +77,8 @@ and numeric values.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
<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><span class="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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -95,9 +90,7 @@ statement can.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">const</span> <span class="nx">n</span> <span class="p">=</span> <span class="mi">500000000</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -109,10 +102,8 @@ arbitrary precision.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -124,9 +115,7 @@ one, such as by an explicit conversion.</p>
|
||||
</td>
|
||||
<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="nb">int64</span><span class="p">(</span><span class="nx">d</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -140,10 +129,8 @@ assignment or function call. For example, here
|
||||
</td>
|
||||
<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">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="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -157,11 +144,11 @@ assignment or function call. For example, here
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run constant.go
|
||||
<span class="go">constant
|
||||
</span><span class="go">6e+11
|
||||
</span><span class="go">600000000000
|
||||
</span><span class="go">-0.28470407323754404</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run constant.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">constant
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">6e+11
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">600000000000
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">-0.28470407323754404</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
75
public/context
generated
75
public/context
generated
@ -37,9 +37,7 @@ across API boundaries and goroutines.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma">
|
||||
<span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -49,12 +47,11 @@ across API boundaries and goroutines.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"net/http"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"net/http"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -64,8 +61,7 @@ across API boundaries and goroutines.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -78,11 +74,9 @@ the <code>Context()</code> method.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"server: hello handler started"</span><span class="p">)</span>
|
||||
<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">"server: hello handler ended"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"server: hello handler started"</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">"server: hello handler ended"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,12 +91,10 @@ the work and return as soon as possible.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">select</span> <span class="p">{</span>
|
||||
<span class="k">case</span> <span class="o"><-</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="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">"hello\n"</span><span class="p">)</span>
|
||||
<span class="k">case</span> <span class="o"><-</span><span class="nx">ctx</span><span class="p">.</span><span class="nf">Done</span><span class="p">():</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <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"><-</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">"hello\n"</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">ctx</span><span class="p">.</span><span class="nf">Done</span><span class="p">():</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -115,14 +107,12 @@ closed.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"server:"</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</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 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="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"server:"</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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -132,8 +122,7 @@ closed.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -145,11 +134,9 @@ route, and start serving.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">http</span><span class="p">.</span><span class="nf">HandleFunc</span><span class="p">(</span><span class="s">"/hello"</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">ListenAndServe</span><span class="p">(</span><span class="s">":8090"</span><span class="p">,</span> <span class="kc">nil</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"/hello"</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">":8090"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -164,8 +151,7 @@ route, and start serving.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run context-in-http-servers.go &</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run context-in-http-servers.go &</span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -178,12 +164,11 @@ cancellation.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> curl localhost:8090/hello
|
||||
<span class="go">server: hello handler started
|
||||
</span><span class="go">^C
|
||||
</span><span class="go">server: context canceled
|
||||
</span><span class="go">server: hello handler ended</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> curl localhost:8090/hello
|
||||
</span></span><span class="line"><span class="cl"><span class="go">server: hello handler started
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">^C
|
||||
</span></span></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
80
public/defer
generated
80
public/defer
generated
@ -45,8 +45,7 @@ purposes of cleanup. <code>defer</code> is often used where e.g.
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,11 +55,10 @@ purposes of cleanup. <code>defer</code> is often used where e.g.
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -73,9 +71,7 @@ do that with <code>defer</code>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -90,12 +86,10 @@ of the enclosing function (<code>main</code>), after
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">f</span> <span class="o">:=</span> <span class="nf">createFile</span><span class="p">(</span><span class="s">"/tmp/defer.txt"</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 class="nf">writeFile</span><span class="p">(</span><span class="nx">f</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"/tmp/defer.txt"</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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -105,15 +99,14 @@ of the enclosing function (<code>main</code>), after
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"creating"</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 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 class="p">}</span>
|
||||
<span class="k">return</span> <span class="nx">f</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"creating"</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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">f</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -123,10 +116,9 @@ of the enclosing function (<code>main</code>), after
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"writing"</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">"data"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"writing"</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">"data"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -136,8 +128,7 @@ of the enclosing function (<code>main</code>), after
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -149,10 +140,9 @@ file, even in a deferred function.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"closing"</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>
|
||||
</pre>
|
||||
<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></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">"closing"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -162,12 +152,11 @@ file, even in a deferred function.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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">"error: %v\n"</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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"error: %v\n"</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -183,11 +172,10 @@ after being written.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run defer.go
|
||||
<span class="go">creating
|
||||
</span><span class="go">writing
|
||||
</span><span class="go">closing</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run defer.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">creating
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">writing
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">closing</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
160
public/directories
generated
160
public/directories
generated
@ -43,8 +43,7 @@
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,12 +53,11 @@
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="s">"path/filepath"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"path/filepath"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,12 +67,11 @@
|
||||
</td>
|
||||
<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>
|
||||
<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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,8 +81,7 @@
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,10 +93,8 @@ directory.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"subdir"</span><span class="p">,</span> <span class="mo">0755</span><span class="p">)</span>
|
||||
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"subdir"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -114,9 +108,7 @@ will delete a whole directory tree (similarly to
|
||||
</td>
|
||||
<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="s">"subdir"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"subdir"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -127,12 +119,10 @@ will delete a whole directory tree (similarly to
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">d</span> <span class="o">:=</span> <span class="p">[]</span><span class="nb">byte</span><span class="p">(</span><span class="s">""</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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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">""</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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -142,8 +132,7 @@ will delete a whole directory tree (similarly to
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">"subdir/file1"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">"subdir/file1"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -156,10 +145,8 @@ command-line <code>mkdir -p</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"subdir/parent/child"</span><span class="p">,</span> <span class="mo">0755</span><span class="p">)</span>
|
||||
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"subdir/parent/child"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -169,10 +156,9 @@ command-line <code>mkdir -p</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">"subdir/parent/file2"</span><span class="p">)</span>
|
||||
<span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">"subdir/parent/file3"</span><span class="p">)</span>
|
||||
<span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">"subdir/parent/child/file4"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">createEmptyFile</span><span class="p">(</span><span class="s">"subdir/parent/file2"</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">"subdir/parent/file3"</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">"subdir/parent/child/file4"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -184,10 +170,8 @@ slice of <code>os.DirEntry</code> objects.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"subdir/parent"</span><span class="p">)</span>
|
||||
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"subdir/parent"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -197,11 +181,10 @@ slice of <code>os.DirEntry</code> objects.</p>
|
||||
</td>
|
||||
<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">"Listing subdir/parent"</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">" "</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>
|
||||
</pre>
|
||||
<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">"Listing subdir/parent"</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></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">" "</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="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -213,10 +196,8 @@ similarly to <code>cd</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"subdir/parent/child"</span><span class="p">)</span>
|
||||
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"subdir/parent/child"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -228,10 +209,8 @@ when listing the <em>current</em> directory.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"."</span><span class="p">)</span>
|
||||
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"."</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -241,11 +220,10 @@ when listing the <em>current</em> directory.</p>
|
||||
</td>
|
||||
<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">"Listing subdir/parent/child"</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">" "</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>
|
||||
</pre>
|
||||
<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">"Listing subdir/parent/child"</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></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">" "</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="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -256,10 +234,8 @@ when listing the <em>current</em> directory.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"../../.."</span><span class="p">)</span>
|
||||
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"../../.."</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -273,11 +249,9 @@ directory visited.</p>
|
||||
</td>
|
||||
<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">"Visiting subdir"</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">"subdir"</span><span class="p">,</span> <span class="nx">visit</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"Visiting subdir"</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">"subdir"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -289,15 +263,13 @@ recursively by <code>filepath.Walk</code>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
|
||||
<span class="k">return</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">" "</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="k">return</span> <span class="kc">nil</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">err</span>
|
||||
</span></span><span class="line"><span class="cl"> <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">" "</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -311,21 +283,21 @@ recursively by <code>filepath.Walk</code>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run directories.go
|
||||
<span class="go">Listing subdir/parent
|
||||
</span><span class="go"> child true
|
||||
</span><span class="go"> file2 false
|
||||
</span><span class="go"> file3 false
|
||||
</span><span class="go">Listing subdir/parent/child
|
||||
</span><span class="go"> file4 false
|
||||
</span><span class="go">Visiting subdir
|
||||
</span><span class="go"> subdir true
|
||||
</span><span class="go"> subdir/file1 false
|
||||
</span><span class="go"> subdir/parent true
|
||||
</span><span class="go"> subdir/parent/child true
|
||||
</span><span class="go"> subdir/parent/child/file4 false
|
||||
</span><span class="go"> subdir/parent/file2 false
|
||||
</span><span class="go"> subdir/parent/file3 false</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run directories.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">Listing subdir/parent
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> child true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> file2 false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> file3 false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Listing subdir/parent/child
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> file4 false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Visiting subdir
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> subdir true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> subdir/file1 false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent/child true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent/child/file4 false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent/file2 false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> subdir/parent/file3 false</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
73
public/embed-directive
generated
73
public/embed-directive
generated
@ -36,9 +36,7 @@ build time. Read more about the embed directive
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma">
|
||||
<span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -50,11 +48,9 @@ identifiers from this package, you can do a blank import with <code>_ "embe
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"embed"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"embed"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -67,10 +63,8 @@ Go source file. This directive embeds the contents of the file into the
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="c1">//go:embed folder/single_file.txt
|
||||
</span><span class="c1"></span><span class="kd">var</span> <span class="nx">fileString</span> <span class="kt">string</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -81,10 +75,8 @@ Go source file. This directive embeds the contents of the file into the
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="c1">//go:embed folder/single_file.txt
|
||||
</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>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,11 +89,9 @@ implements a simple virtual file system.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="c1">//go:embed folder/single_file.txt
|
||||
</span><span class="c1">//go:embed folder/*.hash
|
||||
</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>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -111,8 +101,7 @@ implements a simple virtual file system.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -123,10 +112,8 @@ implements a simple virtual file system.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nb">string</span><span class="p">(</span><span class="nx">fileByte</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -137,10 +124,8 @@ implements a simple virtual file system.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"folder/file1.hash"</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">content1</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"folder/file1.hash"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -150,10 +135,9 @@ implements a simple virtual file system.</p>
|
||||
</td>
|
||||
<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">"folder/file2.hash"</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 class="p">}</span>
|
||||
</pre>
|
||||
<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">"folder/file2.hash"</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -170,11 +154,10 @@ this example can only be run on your local machine.)</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> mkdir -p folder
|
||||
<span class="gp">$</span> echo "hello go" > folder/single_file.txt
|
||||
<span class="gp">$</span> echo "123" > folder/file1.hash
|
||||
<span class="gp">$</span> echo "456" > folder/file2.hash</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> mkdir -p folder
|
||||
</span></span><span class="line"><span class="cl"><span class="gp">$</span> echo "hello go" > folder/single_file.txt
|
||||
</span></span><span class="line"><span class="cl"><span class="gp">$</span> echo "123" > folder/file1.hash
|
||||
</span></span><span class="line"><span class="cl"><span class="gp">$</span> echo "456" > folder/file2.hash</span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -184,11 +167,11 @@ this example can only be run on your local machine.)</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run embed-directive.go
|
||||
<span class="go">hello go
|
||||
</span><span class="go">hello go
|
||||
</span><span class="go">123
|
||||
</span><span class="go">456</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run embed-directive.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">hello go
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">hello go
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">123
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">456</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
66
public/environment-variables
generated
66
public/environment-variables
generated
@ -45,8 +45,7 @@ Let’s look at how to set, get, and list environment variables.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,12 +55,11 @@ Let’s look at how to set, get, and list environment variables.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="s">"strings"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"strings"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -71,8 +69,7 @@ Let’s look at how to set, get, and list environment variables.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -86,11 +83,9 @@ environment.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">os</span><span class="p">.</span><span class="nf">Setenv</span><span class="p">(</span><span class="s">"FOO"</span><span class="p">,</span> <span class="s">"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">"FOO:"</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">"FOO"</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">"BAR:"</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">"BAR"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"FOO"</span><span class="p">,</span> <span class="s">"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">"FOO:"</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">"FOO"</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">"BAR:"</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">"BAR"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -104,14 +99,12 @@ get the key and value. Here we print all the keys.</p>
|
||||
</td>
|
||||
<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="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="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">"="</span><span class="p">,</span> <span class="mi">2</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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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">"="</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -128,10 +121,9 @@ for <code>FOO</code> that we set in the program, but that
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run environment-variables.go
|
||||
<span class="go">FOO: 1
|
||||
</span><span class="go">BAR: </span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run environment-variables.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">FOO: 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">BAR: </span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -143,12 +135,11 @@ particular machine.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="go">TERM_PROGRAM
|
||||
</span><span class="go">PATH
|
||||
</span><span class="go">SHELL
|
||||
</span><span class="go">...
|
||||
</span><span class="go">FOO</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="go">TERM_PROGRAM
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">PATH
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">SHELL
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">...
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">FOO</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -160,11 +151,10 @@ program picks that value up.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> BAR=2 go run environment-variables.go
|
||||
<span class="go">FOO: 1
|
||||
</span><span class="go">BAR: 2
|
||||
</span><span class="go">...</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><span class="go">BAR: 2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">...</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
50
public/epoch
generated
50
public/epoch
generated
@ -45,8 +45,7 @@ Here’s how to do it in Go.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,11 +55,10 @@ Here’s how to do it in Go.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -70,8 +68,7 @@ Here’s how to do it in Go.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,10 +81,8 @@ milliseconds or nanoseconds, respectively.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,10 +92,9 @@ milliseconds or nanoseconds, respectively.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</pre>
|
||||
<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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -112,11 +106,9 @@ since the epoch into the corresponding <code>time</code>.</p>
|
||||
</td>
|
||||
<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">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="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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -130,13 +122,13 @@ since the epoch into the corresponding <code>time</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run epoch.go
|
||||
<span class="go">2012-10-31 16:13:58.292387 +0000 UTC
|
||||
</span><span class="go">1351700038
|
||||
</span><span class="go">1351700038292
|
||||
</span><span class="go">1351700038292387000
|
||||
</span><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>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run epoch.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">2012-10-31 16:13:58.292387 +0000 UTC
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1351700038
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1351700038292
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1351700038292387000
|
||||
</span></span></span><span class="line"><span class="cl"><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.292387 +0000 UTC</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
124
public/errors
generated
124
public/errors
generated
@ -49,8 +49,7 @@ non-error tasks.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -60,11 +59,10 @@ non-error tasks.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"errors"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"errors"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -76,10 +74,8 @@ have type <code>error</code>, a built-in interface.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">if</span> <span class="nx">arg</span> <span class="o">==</span> <span class="mi">42</span> <span class="p">{</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -91,9 +87,7 @@ with the given error message.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"can't work with 42"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"can't work with 42"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -103,8 +97,7 @@ with the given error message.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"> <span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -116,10 +109,8 @@ there was no error.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -133,12 +124,10 @@ to explicitly represent an argument error.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">argError</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">arg</span> <span class="kt">int</span>
|
||||
<span class="nx">prob</span> <span class="kt">string</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -148,10 +137,9 @@ to explicitly represent an argument error.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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">"%d - %s"</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>
|
||||
</pre>
|
||||
<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></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">"%d - %s"</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="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -161,9 +149,8 @@ to explicitly represent an argument error.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="k">if</span> <span class="nx">arg</span> <span class="o">==</span> <span class="mi">42</span> <span class="p">{</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -176,12 +163,10 @@ fields <code>arg</code> and <code>prob</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">&</span><span class="nx">argError</span><span class="p">{</span><span class="nx">arg</span><span class="p">,</span> <span class="s">"can't work with it"</span><span class="p">}</span>
|
||||
<span class="p">}</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 class="p">}</span>
|
||||
</pre>
|
||||
<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">&</span><span class="nx">argError</span><span class="p">{</span><span class="nx">arg</span><span class="p">,</span> <span class="s">"can't work with it"</span><span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -191,8 +176,7 @@ fields <code>arg</code> and <code>prob</code>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -206,22 +190,20 @@ idiom in Go code.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"f1 failed:"</span><span class="p">,</span> <span class="nx">e</span><span class="p">)</span>
|
||||
<span class="p">}</span> <span class="k">else</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">"f1 worked:"</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</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 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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"f2 failed:"</span><span class="p">,</span> <span class="nx">e</span><span class="p">)</span>
|
||||
<span class="p">}</span> <span class="k">else</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">"f2 worked:"</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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">"f1 failed:"</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></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">"f1 worked:"</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></span><span class="line"><span class="cl"> <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></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></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">"f2 failed:"</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></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">"f2 worked:"</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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -235,14 +217,12 @@ assertion.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="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">prob</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -256,13 +236,13 @@ assertion.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run errors.go
|
||||
<span class="go">f1 worked: 10
|
||||
</span><span class="go">f1 failed: can't work with 42
|
||||
</span><span class="go">f2 worked: 10
|
||||
</span><span class="go">f2 failed: 42 - can't work with it
|
||||
</span><span class="go">42
|
||||
</span><span class="go">can't work with it</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run errors.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">f1 worked: 10
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">f1 failed: can't work with 42
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">f2 worked: 10
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">f2 failed: 42 - can't work with it
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">42
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">can't work with it</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
58
public/execing-processes
generated
58
public/execing-processes
generated
@ -50,8 +50,7 @@ function.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -61,12 +60,11 @@ function.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="s">"os/exec"</span>
|
||||
<span class="s">"syscall"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os/exec"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"syscall"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -76,8 +74,7 @@ function.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -91,12 +88,10 @@ we’ll use <code>exec.LookPath</code> to find it (probably
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"ls"</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 class="nb">panic</span><span class="p">(</span><span class="nx">lookErr</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"ls"</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></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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -110,9 +105,7 @@ be the program name.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"ls"</span><span class="p">,</span> <span class="s">"-a"</span><span class="p">,</span> <span class="s">"-l"</span><span class="p">,</span> <span class="s">"-h"</span><span class="p">}</span>
|
||||
</pre>
|
||||
<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">"ls"</span><span class="p">,</span> <span class="s">"-a"</span><span class="p">,</span> <span class="s">"-l"</span><span class="p">,</span> <span class="s">"-h"</span><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -125,9 +118,7 @@ environment.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -142,13 +133,11 @@ value.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">if</span> <span class="nx">execErr</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">execErr</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -163,12 +152,11 @@ value.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run execing-processes.go
|
||||
<span class="go">total 16
|
||||
</span><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 class="go">-rw-r--r-- 1 mark 1.3K Oct 3 16:28 execing-processes.go</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run execing-processes.go
|
||||
</span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
39
public/exit
generated
39
public/exit
generated
@ -39,8 +39,7 @@ status.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -50,11 +49,10 @@ status.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -64,8 +62,7 @@ status.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -77,9 +74,7 @@ this <code>fmt.Println</code> will never be called.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"!"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"!"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -90,10 +85,8 @@ this <code>fmt.Println</code> will never be called.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -123,9 +116,8 @@ will be picked up by <code>go</code> and printed.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run exit.go
|
||||
<span class="go">exit status 3</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -137,11 +129,10 @@ the status in the terminal.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go build exit.go
|
||||
<span class="gp">$</span> ./exit
|
||||
<span class="gp">$</span> echo $?
|
||||
<span class="go">3</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go build exit.go
|
||||
</span></span><span class="line"><span class="cl"><span class="gp">$</span> ./exit
|
||||
</span></span><span class="line"><span class="cl"><span class="gp">$</span> echo $?
|
||||
</span></span><span class="line"><span class="cl"><span class="go">3</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
104
public/file-paths
generated
104
public/file-paths
generated
@ -35,9 +35,7 @@ between operating systems; <code>dir/file</code> on Linux vs.
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma">
|
||||
<span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -47,12 +45,11 @@ between operating systems; <code>dir/file</code> on Linux vs.
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"path/filepath"</span>
|
||||
<span class="s">"strings"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"path/filepath"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"strings"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -62,8 +59,7 @@ between operating systems; <code>dir/file</code> on Linux vs.
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -76,10 +72,8 @@ and constructs a hierarchical path from them.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"dir1"</span><span class="p">,</span> <span class="s">"dir2"</span><span class="p">,</span> <span class="s">"filename"</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">"p:"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"dir1"</span><span class="p">,</span> <span class="s">"dir2"</span><span class="p">,</span> <span class="s">"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="s">"p:"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -94,10 +88,8 @@ and directory changes.</p>
|
||||
</td>
|
||||
<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">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="s">"dir1//"</span><span class="p">,</span> <span class="s">"filename"</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">"dir1/../dir1"</span><span class="p">,</span> <span class="s">"filename"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"dir1//"</span><span class="p">,</span> <span class="s">"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">filepath</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="s">"dir1/../dir1"</span><span class="p">,</span> <span class="s">"filename"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -110,10 +102,8 @@ return both in the same call.</p>
|
||||
</td>
|
||||
<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">"Dir(p):"</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">"Base(p):"</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>
|
||||
<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">"Dir(p):"</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">"Base(p):"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -124,10 +114,8 @@ return both in the same call.</p>
|
||||
</td>
|
||||
<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">filepath</span><span class="p">.</span><span class="nf">IsAbs</span><span class="p">(</span><span class="s">"dir/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="nx">filepath</span><span class="p">.</span><span class="nf">IsAbs</span><span class="p">(</span><span class="s">"/dir/file"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"dir/file"</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">"/dir/file"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -137,8 +125,7 @@ return both in the same call.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"> <span class="nx">filename</span> <span class="o">:=</span> <span class="s">"config.json"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">filename</span> <span class="o">:=</span> <span class="s">"config.json"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -150,10 +137,8 @@ can split the extension out of such names with <code>Ext</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -165,9 +150,7 @@ use <code>strings.TrimSuffix</code>.</p>
|
||||
</td>
|
||||
<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">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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -180,13 +163,11 @@ be made relative to base.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"a/b"</span><span class="p">,</span> <span class="s">"a/b/t/file"</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 class="nb">panic</span><span class="p">(</span><span class="nx">err</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">rel</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"a/b"</span><span class="p">,</span> <span class="s">"a/b/t/file"</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></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></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -196,13 +177,12 @@ be made relative to base.</p>
|
||||
</td>
|
||||
<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">"a/b"</span><span class="p">,</span> <span class="s">"a/c/t/file"</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 class="nb">panic</span><span class="p">(</span><span class="nx">err</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">rel</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"a/b"</span><span class="p">,</span> <span class="s">"a/c/t/file"</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></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></span><span class="line"><span class="cl"> <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><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -216,18 +196,18 @@ be made relative to base.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run file-paths.go
|
||||
<span class="go">p: dir1/dir2/filename
|
||||
</span><span class="go">dir1/filename
|
||||
</span><span class="go">dir1/filename
|
||||
</span><span class="go">Dir(p): dir1/dir2
|
||||
</span><span class="go">Base(p): filename
|
||||
</span><span class="go">false
|
||||
</span><span class="go">true
|
||||
</span><span class="go">.json
|
||||
</span><span class="go">config
|
||||
</span><span class="go">t/file
|
||||
</span><span class="go">../c/t/file</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run file-paths.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">p: dir1/dir2/filename
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">dir1/filename
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">dir1/filename
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Dir(p): dir1/dir2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Base(p): filename
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">.json
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">config
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">t/file
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">../c/t/file</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
77
public/for
generated
77
public/for
generated
@ -43,8 +43,7 @@ some basic types of <code>for</code> loops.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,8 +53,7 @@ some basic types of <code>for</code> loops.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -65,8 +63,7 @@ some basic types of <code>for</code> loops.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -77,13 +74,11 @@ some basic types of <code>for</code> loops.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">i</span> <span class="o">:=</span> <span class="mi">1</span>
|
||||
<span class="k">for</span> <span class="nx">i</span> <span class="o"><=</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="nx">i</span><span class="p">)</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 class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</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="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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -94,11 +89,9 @@ some basic types of <code>for</code> loops.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><=</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="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="p">}</span>
|
||||
</pre>
|
||||
<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"><=</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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -111,12 +104,10 @@ the enclosing function.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">for</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">"loop"</span><span class="p">)</span>
|
||||
<span class="k">break</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <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">"loop"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">break</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -128,15 +119,13 @@ the loop.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><=</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">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">continue</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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><=</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></span><span class="line"><span class="cl"> <span class="k">continue</span>
|
||||
</span></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -150,17 +139,17 @@ the loop.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run for.go
|
||||
<span class="go">1
|
||||
</span><span class="go">2
|
||||
</span><span class="go">3
|
||||
</span><span class="go">7
|
||||
</span><span class="go">8
|
||||
</span><span class="go">9
|
||||
</span><span class="go">loop
|
||||
</span><span class="go">1
|
||||
</span><span class="go">3
|
||||
</span><span class="go">5</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run for.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">7
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">8
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">9
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">loop
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">5</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
46
public/functions
generated
46
public/functions
generated
@ -43,8 +43,7 @@ functions with a few different examples.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,8 +53,7 @@ functions with a few different examples.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -67,9 +65,7 @@ their sum as an <code>int</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -82,10 +78,8 @@ expression.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">return</span> <span class="nx">a</span> <span class="o">+</span> <span class="nx">b</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -99,11 +93,9 @@ declares the type.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -113,8 +105,7 @@ declares the type.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -126,10 +117,8 @@ declares the type.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"1+2 ="</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"1+2 ="</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -139,10 +128,9 @@ declares the type.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"1+2+3 ="</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"1+2+3 ="</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -156,9 +144,9 @@ declares the type.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run functions.go
|
||||
<span class="go">1+2 = 3
|
||||
</span><span class="go">1+2+3 = 6</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run functions.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">1+2 = 3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1+2+3 = 6</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
106
public/generics
generated
106
public/generics
generated
@ -43,8 +43,7 @@
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,8 +53,7 @@
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -73,15 +71,13 @@ restricted in any way (<code>any</code> is an alias for <code>interface{}</code>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="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="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="p">}</span>
|
||||
<span class="k">return</span> <span class="nx">r</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -93,11 +89,9 @@ singly-linked list with values of any type.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -107,11 +101,10 @@ singly-linked list with values of any type.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="nx">val</span> <span class="nx">T</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -124,17 +117,15 @@ parameters in place. The type is <code>List[T]</code>, not <code>List</code>.</p
|
||||
</td>
|
||||
<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">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="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="nx">lst</span><span class="p">.</span><span class="nx">head</span> <span class="p">=</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="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">lst</span><span class="p">.</span><span class="nx">head</span>
|
||||
<span class="p">}</span> <span class="k">else</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">&</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">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="p">}</span>
|
||||
</pre>
|
||||
<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></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></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">&</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></span><span class="line"><span class="cl"> <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">&</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -144,14 +135,13 @@ parameters in place. The type is <code>List[T]</code>, not <code>List</code>.</p
|
||||
</td>
|
||||
<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>
|
||||
<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 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 class="k">return</span> <span class="nx">elems</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">elems</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -161,9 +151,8 @@ parameters in place. The type is <code>List[T]</code>, not <code>List</code>.</p
|
||||
</td>
|
||||
<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>
|
||||
<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">"2"</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s">"4"</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="s">"8"</span><span class="p">}</span>
|
||||
</pre>
|
||||
<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><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">"2"</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s">"4"</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="s">"8"</span><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -178,9 +167,7 @@ automatically.</p>
|
||||
</td>
|
||||
<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">"keys:"</span><span class="p">,</span> <span class="nf">MapKeys</span><span class="p">(</span><span class="nx">m</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"keys:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -191,9 +178,7 @@ automatically.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -203,13 +188,12 @@ automatically.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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 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">"list:"</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>
|
||||
</pre>
|
||||
<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></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></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></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></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">"list:"</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="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -223,9 +207,9 @@ automatically.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run generics.go
|
||||
<span class="go">keys: [4 1 2]
|
||||
</span><span class="go">list: [10 13 23]</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run generics.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">keys: [4 1 2]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">list: [10 13 23]</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
69
public/goroutines
generated
69
public/goroutines
generated
@ -42,8 +42,7 @@
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -53,11 +52,10 @@
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -67,12 +65,11 @@
|
||||
</td>
|
||||
<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>
|
||||
<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"><</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">":"</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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"><</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">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">":"</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -82,8 +79,7 @@
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -96,9 +92,7 @@ synchronously.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nf">f</span><span class="p">(</span><span class="s">"direct"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">f</span><span class="p">(</span><span class="s">"direct"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -111,9 +105,7 @@ concurrently with the calling one.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">go</span> <span class="nf">f</span><span class="p">(</span><span class="s">"goroutine"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"goroutine"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -125,11 +117,9 @@ function call.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="p">}(</span><span class="s">"going"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="p">}(</span><span class="s">"going"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -142,11 +132,9 @@ separate goroutines now. Wait for them to finish
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"done"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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><span class="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">"done"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -165,16 +153,15 @@ Go runtime.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run goroutines.go
|
||||
<span class="go">direct : 0
|
||||
</span><span class="go">direct : 1
|
||||
</span><span class="go">direct : 2
|
||||
</span><span class="go">goroutine : 0
|
||||
</span><span class="go">going
|
||||
</span><span class="go">goroutine : 1
|
||||
</span><span class="go">goroutine : 2
|
||||
</span><span class="go">done</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run goroutines.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">direct : 0
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">direct : 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">direct : 2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">goroutine : 0
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">going
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">goroutine : 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">goroutine : 2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">done</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
31
public/hello-world
generated
31
public/hello-world
generated
@ -29,9 +29,7 @@ message. Here’s the full source code.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma">
|
||||
<span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -41,8 +39,7 @@ message. Here’s the full source code.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -52,10 +49,9 @@ message. Here’s the full source code.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><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">"hello world"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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><span class="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">"hello world"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -71,9 +67,8 @@ use <code>go run</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run hello-world.go
|
||||
<span class="go">hello world</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -85,10 +80,9 @@ binaries. We can do this using <code>go build</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go build hello-world.go
|
||||
<span class="gp">$</span> ls
|
||||
<span class="go">hello-world hello-world.go</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go build hello-world.go
|
||||
</span></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -99,9 +93,8 @@ binaries. We can do this using <code>go build</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> ./hello-world
|
||||
<span class="go">hello world</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> ./hello-world
|
||||
</span></span><span class="line"><span class="cl"><span class="go">hello world</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
67
public/http-client
generated
67
public/http-client
generated
@ -35,9 +35,7 @@ HTTP requests.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma">
|
||||
<span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -47,12 +45,11 @@ HTTP requests.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"bufio"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"net/http"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"bufio"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"net/http"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -62,8 +59,7 @@ HTTP requests.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -78,13 +74,11 @@ settings.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"https://gobyexample.com"</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 class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<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>
|
||||
<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">"https://gobyexample.com"</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></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></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -95,9 +89,7 @@ settings.</p>
|
||||
</td>
|
||||
<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">"Response status:"</span><span class="p">,</span> <span class="nx">resp</span><span class="p">.</span><span class="nx">Status</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"Response status:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -108,12 +100,10 @@ settings.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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">&&</span> <span class="nx">i</span> <span class="p"><</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="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="p">}</span>
|
||||
</pre>
|
||||
<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></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">&&</span> <span class="nx">i</span> <span class="p"><</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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -123,11 +113,10 @@ settings.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -141,13 +130,13 @@ settings.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run http-clients.go
|
||||
<span class="go">Response status: 200 OK
|
||||
</span><span class="go"><!DOCTYPE html>
|
||||
</span><span class="go"><html>
|
||||
</span><span class="go"> <head>
|
||||
</span><span class="go"> <meta charset="utf-8">
|
||||
</span><span class="go"> <title>Go by Example</title></span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run http-clients.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">Response status: 200 OK
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"><!DOCTYPE html>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"><html>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <head>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <meta charset="utf-8">
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <title>Go by Example</title></span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
63
public/http-server
generated
63
public/http-server
generated
@ -33,9 +33,7 @@
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma">
|
||||
<span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -45,11 +43,10 @@
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"net/http"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"net/http"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -64,9 +61,7 @@ on functions with the appropriate signature.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -81,10 +76,8 @@ HTTP response. Here our simple response is just
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"hello\n"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"hello\n"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -94,8 +87,7 @@ HTTP response. Here our simple response is just
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -108,14 +100,12 @@ headers and echoing them into the response body.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">_</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="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">"%v: %v\n"</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="p">}</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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">"%v: %v\n"</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -125,8 +115,7 @@ headers and echoing them into the response body.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -140,10 +129,8 @@ takes a function as an argument.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">http</span><span class="p">.</span><span class="nf">HandleFunc</span><span class="p">(</span><span class="s">"/hello"</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">"/headers"</span><span class="p">,</span> <span class="nx">headers</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"/hello"</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">"/headers"</span><span class="p">,</span> <span class="nx">headers</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -156,10 +143,8 @@ router we’ve just set up.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">http</span><span class="p">.</span><span class="nf">ListenAndServe</span><span class="p">(</span><span class="s">":8090"</span><span class="p">,</span> <span class="kc">nil</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">":8090"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -174,8 +159,7 @@ router we’ve just set up.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run http-servers.go &</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run http-servers.go &</span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -186,9 +170,8 @@ router we’ve just set up.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> curl localhost:8090/hello
|
||||
<span class="go">hello</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
55
public/if-else
generated
55
public/if-else
generated
@ -43,8 +43,7 @@ straight-forward.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,8 +53,7 @@ straight-forward.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -65,8 +63,7 @@ straight-forward.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -77,13 +74,11 @@ straight-forward.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"7 is even"</span><span class="p">)</span>
|
||||
<span class="p">}</span> <span class="k">else</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">"7 is odd"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"7 is even"</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></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">"7 is odd"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -94,11 +89,9 @@ straight-forward.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"8 is divisible by 4"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"8 is divisible by 4"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -111,16 +104,14 @@ and all subsequent branches.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><</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">num</span><span class="p">,</span> <span class="s">"is negative"</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"><</span> <span class="mi">10</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">"has 1 digit"</span><span class="p">)</span>
|
||||
<span class="p">}</span> <span class="k">else</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">"has multiple digits"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><</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">"is negative"</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"><</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">"has 1 digit"</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></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">"has multiple digits"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -146,10 +137,10 @@ in Go, but that the braces are required.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run if-else.go
|
||||
<span class="go">7 is odd
|
||||
</span><span class="go">8 is divisible by 4
|
||||
</span><span class="go">9 has 1 digit</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run if-else.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">7 is odd
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">8 is divisible by 4
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">9 has 1 digit</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
105
public/interfaces
generated
105
public/interfaces
generated
@ -43,8 +43,7 @@ signatures.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,11 +53,10 @@ signatures.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"math"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"math"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,12 +67,10 @@ signatures.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">geometry</span> <span class="kd">interface</span> <span class="p">{</span>
|
||||
<span class="nf">area</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 class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -86,14 +82,12 @@ signatures.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">width</span><span class="p">,</span> <span class="nx">height</span> <span class="kt">float64</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 class="nx">radius</span> <span class="kt">float64</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -106,14 +100,12 @@ implement <code>geometry</code> on <code>rect</code>s.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="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 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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -124,14 +116,12 @@ implement <code>geometry</code> on <code>rect</code>s.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="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 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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -145,13 +135,11 @@ to work on any <code>geometry</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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 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">perim</span><span class="p">())</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -161,10 +149,9 @@ to work on any <code>geometry</code>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</pre>
|
||||
<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><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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -178,11 +165,9 @@ these structs as arguments to <code>measure</code>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">c</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -196,13 +181,13 @@ these structs as arguments to <code>measure</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run interfaces.go
|
||||
<span class="go">{3 4}
|
||||
</span><span class="go">12
|
||||
</span><span class="go">14
|
||||
</span><span class="go">{5}
|
||||
</span><span class="go">78.53981633974483
|
||||
</span><span class="go">31.41592653589793</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run interfaces.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">{3 4}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">12
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">14
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">{5}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">78.53981633974483
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">31.41592653589793</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
181
public/json
generated
181
public/json
generated
@ -44,8 +44,7 @@ data types.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,12 +54,11 @@ data types.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"encoding/json"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"encoding/json"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -72,12 +70,10 @@ decoding of custom types below.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">response1</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">Page</span> <span class="kt">int</span>
|
||||
<span class="nx">Fruits</span> <span class="p">[]</span><span class="kt">string</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -89,12 +85,10 @@ Fields must start with capital letters to be exported.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">response2</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">Page</span> <span class="kt">int</span> <span class="s">`json:"page"`</span>
|
||||
<span class="nx">Fruits</span> <span class="p">[]</span><span class="kt">string</span> <span class="s">`json:"fruits"`</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="nx">Page</span> <span class="kt">int</span> <span class="s">`json:"page"`</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:"fruits"`</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -104,8 +98,7 @@ Fields must start with capital letters to be exported.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -118,10 +111,8 @@ values.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -131,9 +122,8 @@ values.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -143,9 +133,8 @@ values.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -155,9 +144,8 @@ values.</p>
|
||||
</td>
|
||||
<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">"gopher"</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>
|
||||
</pre>
|
||||
<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">"gopher"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -169,11 +157,9 @@ to JSON arrays and objects as you’d expect.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"apple"</span><span class="p">,</span> <span class="s">"peach"</span><span class="p">,</span> <span class="s">"pear"</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 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>
|
||||
<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">"apple"</span><span class="p">,</span> <span class="s">"peach"</span><span class="p">,</span> <span class="s">"pear"</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -183,10 +169,9 @@ to JSON arrays and objects as you’d expect.</p>
|
||||
</td>
|
||||
<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">"apple"</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s">"lettuce"</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 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>
|
||||
</pre>
|
||||
<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">"apple"</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s">"lettuce"</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">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">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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -200,13 +185,11 @@ use those names as the JSON keys.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">res1D</span> <span class="o">:=</span> <span class="o">&</span><span class="nx">response1</span><span class="p">{</span>
|
||||
<span class="nx">Page</span><span class="p">:</span> <span class="mi">1</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">"apple"</span><span class="p">,</span> <span class="s">"peach"</span><span class="p">,</span> <span class="s">"pear"</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 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>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">res1D</span> <span class="o">:=</span> <span class="o">&</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></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">"apple"</span><span class="p">,</span> <span class="s">"peach"</span><span class="p">,</span> <span class="s">"pear"</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -220,13 +203,11 @@ of such tags.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">res2D</span> <span class="o">:=</span> <span class="o">&</span><span class="nx">response2</span><span class="p">{</span>
|
||||
<span class="nx">Page</span><span class="p">:</span> <span class="mi">1</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">"apple"</span><span class="p">,</span> <span class="s">"peach"</span><span class="p">,</span> <span class="s">"pear"</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 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>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">res2D</span> <span class="o">:=</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">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">"apple"</span><span class="p">,</span> <span class="s">"peach"</span><span class="p">,</span> <span class="s">"pear"</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -239,9 +220,7 @@ structure.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">`{"num":6.13,"strs":["a","b"]}`</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">`{"num":6.13,"strs":["a","b"]}`</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -255,9 +234,7 @@ to arbitrary data types.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -269,12 +246,10 @@ associated errors.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">&</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="nb">panic</span><span class="p">(</span><span class="nx">err</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">dat</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">&</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></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -288,10 +263,8 @@ the expected <code>float64</code> type.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">num</span> <span class="o">:=</span> <span class="nx">dat</span><span class="p">[</span><span class="s">"num"</span><span class="p">].(</span><span class="kt">float64</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>
|
||||
</pre>
|
||||
<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">"num"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -303,11 +276,9 @@ conversions.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">strs</span> <span class="o">:=</span> <span class="nx">dat</span><span class="p">[</span><span class="s">"strs"</span><span class="p">].([]</span><span class="kd">interface</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 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>
|
||||
<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">"strs"</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -322,13 +293,11 @@ data.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">str</span> <span class="o">:=</span> <span class="s">`{"page": 1, "fruits": ["apple", "peach"]}`</span>
|
||||
<span class="nx">res</span> <span class="o">:=</span> <span class="nx">response2</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">&</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 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>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">str</span> <span class="o">:=</span> <span class="s">`{"page": 1, "fruits": ["apple", "peach"]}`</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></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">&</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -343,12 +312,10 @@ stream JSON encodings directly to <code>os.Writer</code>s like
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">"apple"</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s">"lettuce"</span><span class="p">:</span> <span class="mi">7</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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"apple"</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s">"lettuce"</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -362,21 +329,21 @@ stream JSON encodings directly to <code>os.Writer</code>s like
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run json.go
|
||||
<span class="go">true
|
||||
</span><span class="go">1
|
||||
</span><span class="go">2.34
|
||||
</span><span class="go">"gopher"
|
||||
</span><span class="go">["apple","peach","pear"]
|
||||
</span><span class="go">{"apple":5,"lettuce":7}
|
||||
</span><span class="go">{"Page":1,"Fruits":["apple","peach","pear"]}
|
||||
</span><span class="go">{"page":1,"fruits":["apple","peach","pear"]}
|
||||
</span><span class="go">map[num:6.13 strs:[a b]]
|
||||
</span><span class="go">6.13
|
||||
</span><span class="go">a
|
||||
</span><span class="go">{1 [apple peach]}
|
||||
</span><span class="go">apple
|
||||
</span><span class="go">{"apple":5,"lettuce":7}</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run json.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">2.34
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">"gopher"
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">["apple","peach","pear"]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">{"apple":5,"lettuce":7}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">{"Page":1,"Fruits":["apple","peach","pear"]}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">{"page":1,"fruits":["apple","peach","pear"]}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">map[num:6.13 strs:[a b]]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">6.13
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">a
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">{1 [apple peach]}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">apple
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">{"apple":5,"lettuce":7}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
60
public/line-filters
generated
60
public/line-filters
generated
@ -48,9 +48,7 @@ pattern to write your own Go line filters.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma">
|
||||
<span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -60,13 +58,12 @@ pattern to write your own Go line filters.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"bufio"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="s">"strings"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"bufio"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"strings"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -76,8 +73,7 @@ pattern to write your own Go line filters.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -91,9 +87,7 @@ the next line in the default scanner.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -105,8 +99,7 @@ from the input.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -116,8 +109,7 @@ from the input.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -128,10 +120,8 @@ from the input.</p>
|
||||
</td>
|
||||
<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">ucl</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -143,13 +133,11 @@ expected and not reported by <code>Scan</code> as an error.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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">"error:"</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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"error:"</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -165,9 +153,8 @@ lowercase lines.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> echo 'hello' > /tmp/lines
|
||||
<span class="gp">$</span> echo 'filter' >> /tmp/lines</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> echo 'hello' > /tmp/lines
|
||||
</span></span><span class="line"><span class="cl"><span class="gp">$</span> echo 'filter' >> /tmp/lines</span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -178,10 +165,9 @@ lowercase lines.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> cat /tmp/lines | go run line-filters.go
|
||||
<span class="go">HELLO
|
||||
</span><span class="go">FILTER</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><span class="go">FILTER</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
84
public/maps
generated
84
public/maps
generated
@ -43,8 +43,7 @@
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,8 +53,7 @@
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -65,8 +63,7 @@
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -78,9 +75,7 @@
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -92,10 +87,8 @@ syntax.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">m</span><span class="p">[</span><span class="s">"k1"</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">"k2"</span><span class="p">]</span> <span class="p">=</span> <span class="mi">13</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">m</span><span class="p">[</span><span class="s">"k1"</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">"k2"</span><span class="p">]</span> <span class="p">=</span> <span class="mi">13</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -107,9 +100,7 @@ its key/value pairs.</p>
|
||||
</td>
|
||||
<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">"map:"</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"map:"</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -120,10 +111,8 @@ its key/value pairs.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">v1</span> <span class="o">:=</span> <span class="nx">m</span><span class="p">[</span><span class="s">"k1"</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">"v1:"</span><span class="p">,</span> <span class="nx">v1</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"k1"</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">"v1:"</span><span class="p">,</span> <span class="nx">v1</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -136,10 +125,8 @@ value type is returned.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">v3</span> <span class="o">:=</span> <span class="nx">m</span><span class="p">[</span><span class="s">"k3"</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">"v3:"</span><span class="p">,</span> <span class="nx">v3</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"k3"</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">"v3:"</span><span class="p">,</span> <span class="nx">v3</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -151,9 +138,7 @@ pairs when called on a map.</p>
|
||||
</td>
|
||||
<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">"len:"</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">m</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"len:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -165,10 +150,8 @@ a map.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nb">delete</span><span class="p">(</span><span class="nx">m</span><span class="p">,</span> <span class="s">"k2"</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">"map:"</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"k2"</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">"map:"</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -180,10 +163,8 @@ the <code>clear</code> builtin.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nf">clear</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="s">"map:"</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"map:"</span><span class="p">,</span> <span class="nx">m</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -200,10 +181,8 @@ itself, so we ignored it with the <em>blank identifier</em>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"k2"</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">"prs:"</span><span class="p">,</span> <span class="nx">prs</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"k2"</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">"prs:"</span><span class="p">,</span> <span class="nx">prs</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -215,11 +194,9 @@ the same line with this syntax.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"foo"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">"bar"</span><span class="p">:</span> <span class="mi">2</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">"map:"</span><span class="p">,</span> <span class="nx">n</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"foo"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">"bar"</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">"map:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -235,16 +212,15 @@ printed with <code>fmt.Println</code>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run maps.go
|
||||
<span class="go">map: map[k1:7 k2:13]
|
||||
</span><span class="go">v1: 7
|
||||
</span><span class="go">v3: 0
|
||||
</span><span class="go">len: 2
|
||||
</span><span class="go">map: map[k1:7]
|
||||
</span><span class="go">map: map[]
|
||||
</span><span class="go">prs: false
|
||||
</span><span class="go">map: map[bar:2 foo:1]</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><span class="go">v1: 7
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">v3: 0
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">len: 2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">map: map[k1:7]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">map: map[]
|
||||
</span></span></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
60
public/methods
generated
60
public/methods
generated
@ -42,8 +42,7 @@
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -53,8 +52,7 @@
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -64,10 +62,9 @@
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">width</span><span class="p">,</span> <span class="nx">height</span> <span class="kt">int</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -78,11 +75,9 @@
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -94,11 +89,9 @@ receiver types. Here’s an example of a value receiver.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -108,9 +101,8 @@ receiver types. Here’s an example of a value receiver.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</pre>
|
||||
<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><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -121,10 +113,8 @@ receiver types. Here’s an example of a value receiver.</p>
|
||||
</td>
|
||||
<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">"area: "</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">"perim:"</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nf">perim</span><span class="p">())</span>
|
||||
</pre>
|
||||
<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">"area: "</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">"perim:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -139,12 +129,10 @@ receiving struct.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">rp</span> <span class="o">:=</span> <span class="o">&</span><span class="nx">r</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"area: "</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">"perim:"</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="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">rp</span> <span class="o">:=</span> <span class="o">&</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">"area: "</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">"perim:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -158,11 +146,11 @@ receiving struct.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run methods.go
|
||||
<span class="go">area: 50
|
||||
</span><span class="go">perim: 30
|
||||
</span><span class="go">area: 50
|
||||
</span><span class="go">perim: 30</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run methods.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">area: 50
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">perim: 30
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">area: 50
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">perim: 30</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
41
public/multiple-return-values
generated
41
public/multiple-return-values
generated
@ -44,8 +44,7 @@ to return both result and error values from a function.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,8 +54,7 @@ to return both result and error values from a function.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -68,11 +66,9 @@ the function returns 2 <code>int</code>s.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">return</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">7</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -82,8 +78,7 @@ the function returns 2 <code>int</code>s.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -95,11 +90,9 @@ call with <em>multiple assignment</em>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">b</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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><span class="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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -111,11 +104,9 @@ use the blank identifier <code>_</code>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -129,10 +120,10 @@ use the blank identifier <code>_</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run multiple-return-values.go
|
||||
<span class="go">3
|
||||
</span><span class="go">7
|
||||
</span><span class="go">7</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run multiple-return-values.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">7
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">7</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
84
public/mutexes
generated
84
public/mutexes
generated
@ -45,8 +45,7 @@ to safely access data across multiple goroutines.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,11 +55,10 @@ to safely access data across multiple goroutines.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"sync"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"sync"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -76,12 +74,10 @@ pointer.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">Container</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">mu</span> <span class="nx">sync</span><span class="p">.</span><span class="nx">Mutex</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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -94,8 +90,7 @@ statement.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -105,11 +100,10 @@ statement.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -121,9 +115,8 @@ initialization is required here.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">c</span> <span class="o">:=</span> <span class="nx">Container</span><span class="p">{</span>
|
||||
</pre>
|
||||
<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><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -133,9 +126,8 @@ initialization is required here.</p>
|
||||
</td>
|
||||
<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">"a"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s">"b"</span><span class="p">:</span> <span class="mi">0</span><span class="p">},</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"a"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s">"b"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -145,8 +137,7 @@ initialization is required here.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -158,14 +149,12 @@ in a loop.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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"><</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="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="p">}</span>
|
||||
<span class="nx">wg</span><span class="p">.</span><span class="nf">Done</span><span class="p">()</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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"><</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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -178,12 +167,10 @@ and two of them access the same counter.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">go</span> <span class="nf">doIncrement</span><span class="p">(</span><span class="s">"a"</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">"a"</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">"b"</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="k">go</span> <span class="nf">doIncrement</span><span class="p">(</span><span class="s">"a"</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">"a"</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">"b"</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -194,11 +181,9 @@ and two of them access the same counter.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">wg</span><span class="p">.</span><span class="nf">Wait</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 class="p">}</span>
|
||||
</pre>
|
||||
<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><span class="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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -214,9 +199,8 @@ updated as expected.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run mutexes.go
|
||||
<span class="go">map[a:20000 b:10000]</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
71
public/non-blocking-channel-operations
generated
71
public/non-blocking-channel-operations
generated
@ -45,8 +45,7 @@ non-blocking multi-way <code>select</code>s.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,8 +55,7 @@ non-blocking multi-way <code>select</code>s.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -67,10 +65,9 @@ non-blocking multi-way <code>select</code>s.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</pre>
|
||||
<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><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><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,14 +81,12 @@ it will immediately take the <code>default</code> case.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">select</span> <span class="p">{</span>
|
||||
<span class="k">case</span> <span class="nx">msg</span> <span class="o">:=</span> <span class="o"><-</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="s">"received message"</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span>
|
||||
<span class="k">default</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">"no message received"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <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"><-</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">"received message"</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></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">"no message received"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -105,15 +100,13 @@ Therefore the <code>default</code> case is selected.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">msg</span> <span class="o">:=</span> <span class="s">"hi"</span>
|
||||
<span class="k">select</span> <span class="p">{</span>
|
||||
<span class="k">case</span> <span class="nx">messages</span> <span class="o"><-</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">"sent message"</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span>
|
||||
<span class="k">default</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">"no message sent"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">msg</span> <span class="o">:=</span> <span class="s">"hi"</span>
|
||||
</span></span><span class="line"><span class="cl"> <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"><-</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">"sent message"</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></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">"no message sent"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -127,17 +120,15 @@ on both <code>messages</code> and <code>signals</code>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">select</span> <span class="p">{</span>
|
||||
<span class="k">case</span> <span class="nx">msg</span> <span class="o">:=</span> <span class="o"><-</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="s">"received message"</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span>
|
||||
<span class="k">case</span> <span class="nx">sig</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">signals</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">"received signal"</span><span class="p">,</span> <span class="nx">sig</span><span class="p">)</span>
|
||||
<span class="k">default</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">"no activity"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <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"><-</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">"received message"</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"><-</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">"received signal"</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></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">"no activity"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -151,10 +142,10 @@ on both <code>messages</code> and <code>signals</code>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run non-blocking-channel-operations.go
|
||||
<span class="go">no message received
|
||||
</span><span class="go">no message sent
|
||||
</span><span class="go">no activity</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run non-blocking-channel-operations.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">no message received
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">no message sent
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">no activity</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
68
public/number-parsing
generated
68
public/number-parsing
generated
@ -43,8 +43,7 @@ in many programs; here’s how to do it in Go.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,12 +55,10 @@ parsing.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"strconv"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"strconv"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -71,8 +68,7 @@ parsing.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,10 +80,8 @@ precision to parse.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"1.234"</span><span class="p">,</span> <span class="mi">64</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>
|
||||
</pre>
|
||||
<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">"1.234"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -100,10 +94,8 @@ bits.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"123"</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">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>
|
||||
<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">"123"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -114,10 +106,8 @@ bits.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"0x1c8"</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">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>
|
||||
<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">"0x1c8"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -128,10 +118,8 @@ bits.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"789"</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">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>
|
||||
<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">"789"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -143,10 +131,8 @@ bits.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"135"</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">k</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"135"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -157,11 +143,9 @@ bits.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"wat"</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 class="p">}</span>
|
||||
</pre>
|
||||
<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">"wat"</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -175,13 +159,13 @@ bits.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run number-parsing.go
|
||||
<span class="go">1.234
|
||||
</span><span class="go">123
|
||||
</span><span class="go">456
|
||||
</span><span class="go">789
|
||||
</span><span class="go">135
|
||||
</span><span class="go">strconv.ParseInt: parsing "wat": invalid syntax</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run number-parsing.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">1.234
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">123
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">456
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">789
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">135
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">strconv.ParseInt: parsing "wat": invalid syntax</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
40
public/panic
generated
40
public/panic
generated
@ -45,8 +45,7 @@ aren’t prepared to handle gracefully.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,8 +55,7 @@ aren’t prepared to handle gracefully.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"os"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"os"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -67,8 +65,7 @@ aren’t prepared to handle gracefully.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -81,9 +78,7 @@ site designed to panic.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nb">panic</span><span class="p">(</span><span class="s">"a problem"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="s">"a problem"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,13 +92,11 @@ returns an error value that we don’t know how to
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"/tmp/file"</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 class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"/tmp/file"</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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -134,9 +127,8 @@ the first panic out.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run panic.go
|
||||
<span class="go">panic: a problem</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -146,11 +138,11 @@ the first panic out.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="go">goroutine 1 [running]:
|
||||
</span><span class="go">main.main()
|
||||
</span><span class="go"> /.../panic.go:12 +0x47
|
||||
</span><span class="go">...
|
||||
</span><span class="go">exit status 2</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="go">goroutine 1 [running]:
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">main.main()
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> /.../panic.go:12 +0x47
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">...
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">exit status 2</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
57
public/pointers
generated
57
public/pointers
generated
@ -44,8 +44,7 @@ within your program.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,8 +54,7 @@ within your program.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -71,11 +69,9 @@ from the one in the calling function.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">ival</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -91,11 +87,9 @@ value at the referenced address.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="o">*</span><span class="nx">iptr</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -105,10 +99,9 @@ value at the referenced address.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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">"initial:"</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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><span class="line"><span class="cl"> <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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"initial:"</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -118,9 +111,8 @@ value at the referenced address.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"zeroval:"</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"zeroval:"</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -132,10 +124,8 @@ i.e. a pointer to <code>i</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nf">zeroptr</span><span class="p">(</span><span class="o">&</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">"zeroptr:"</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">zeroptr</span><span class="p">(</span><span class="o">&</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">"zeroptr:"</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -146,10 +136,8 @@ i.e. a pointer to <code>i</code>.</p>
|
||||
</td>
|
||||
<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="s">"pointer:"</span><span class="p">,</span> <span class="o">&</span><span class="nx">i</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"pointer:"</span><span class="p">,</span> <span class="o">&</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -166,12 +154,11 @@ the memory address for that variable.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run pointers.go
|
||||
<span class="go">initial: 1
|
||||
</span><span class="go">zeroval: 1
|
||||
</span><span class="go">zeroptr: 0
|
||||
</span><span class="go">pointer: 0x42131100</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run pointers.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">initial: 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">zeroval: 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">zeroptr: 0
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">pointer: 0x42131100</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
88
public/random-numbers
generated
88
public/random-numbers
generated
@ -44,8 +44,7 @@ generation.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,12 +54,11 @@ generation.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"math/rand"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"math/rand"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -70,8 +68,7 @@ generation.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -83,11 +80,9 @@ generation.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">","</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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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">","</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -99,9 +94,7 @@ generation.</p>
|
||||
</td>
|
||||
<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">rand</span><span class="p">.</span><span class="nf">Float64</span><span class="p">())</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -113,11 +106,9 @@ other ranges, for example <code>5.0 <= f' < 10.0</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">","</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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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">","</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -132,10 +123,8 @@ intend to be secret; use <code>crypto/rand</code> for those.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -147,11 +136,9 @@ functions on the <code>rand</code> package.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">","</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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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">","</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -163,18 +150,16 @@ produces the same sequence of random numbers.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">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">","</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="nx">fmt</span><span class="p">.</span><span class="nf">Println</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 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">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">","</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="p">}</span>
|
||||
</pre>
|
||||
<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></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></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">","</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></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><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></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></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">","</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -193,14 +178,13 @@ playground is implemented.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run random-numbers.go
|
||||
<span class="go">81,87
|
||||
</span><span class="go">0.6645600532184904
|
||||
</span><span class="go">7.123187485356329,8.434115364335547
|
||||
</span><span class="go">0,28
|
||||
</span><span class="go">5,87
|
||||
</span><span class="go">5,87</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run random-numbers.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">81,87
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">0.6645600532184904
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">7.123187485356329,8.434115364335547
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">0,28
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">5,87
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">5,87</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
81
public/range
generated
81
public/range
generated
@ -44,8 +44,7 @@ of the data structures we’ve already learned.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,8 +54,7 @@ of the data structures we’ve already learned.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -66,8 +64,7 @@ of the data structures we’ve already learned.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -79,14 +76,12 @@ Arrays work like this too.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">sum</span> <span class="o">:=</span> <span class="mi">0</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 class="nx">sum</span> <span class="o">+=</span> <span class="nx">num</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">"sum:"</span><span class="p">,</span> <span class="nx">sum</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <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></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">"sum:"</span><span class="p">,</span> <span class="nx">sum</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -101,13 +96,11 @@ the indexes though.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">if</span> <span class="nx">num</span> <span class="o">==</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">"index:"</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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">"index:"</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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -118,12 +111,10 @@ the indexes though.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"a"</span><span class="p">:</span> <span class="s">"apple"</span><span class="p">,</span> <span class="s">"b"</span><span class="p">:</span> <span class="s">"banana"</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"%s -> %s\n"</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>
|
||||
</pre>
|
||||
<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">"a"</span><span class="p">:</span> <span class="s">"apple"</span><span class="p">,</span> <span class="s">"b"</span><span class="p">:</span> <span class="s">"banana"</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></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">"%s -> %s\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -134,11 +125,9 @@ the indexes though.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"key:"</span><span class="p">,</span> <span class="nx">k</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"key:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -153,12 +142,10 @@ details.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"go"</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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"go"</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -172,15 +159,15 @@ details.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run range.go
|
||||
<span class="go">sum: 9
|
||||
</span><span class="go">index: 1
|
||||
</span><span class="go">a -> apple
|
||||
</span><span class="go">b -> banana
|
||||
</span><span class="go">key: a
|
||||
</span><span class="go">key: b
|
||||
</span><span class="go">0 103
|
||||
</span><span class="go">1 111</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run range.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">sum: 9
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">index: 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">a -> apple
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">b -> banana
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">key: a
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">key: b
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">0 103
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1 111</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
35
public/range-over-channels
generated
35
public/range-over-channels
generated
@ -45,8 +45,7 @@ values received from a channel.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,8 +55,7 @@ values received from a channel.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -67,8 +65,7 @@ values received from a channel.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -79,12 +76,10 @@ values received from a channel.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="s">"one"</span>
|
||||
<span class="nx">queue</span> <span class="o"><-</span> <span class="s">"two"</span>
|
||||
<span class="nb">close</span><span class="p">(</span><span class="nx">queue</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="nx">queue</span> <span class="o"><-</span> <span class="s">"one"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="nx">queue</span> <span class="o"><-</span> <span class="s">"two"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -98,12 +93,10 @@ receiving the 2 elements.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -117,9 +110,9 @@ receiving the 2 elements.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run range-over-channels.go
|
||||
<span class="go">one
|
||||
</span><span class="go">two</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run range-over-channels.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">one
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">two</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
111
public/rate-limiting
generated
111
public/rate-limiting
generated
@ -46,8 +46,7 @@ channels, and <a href="tickers">tickers</a>.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -57,11 +56,10 @@ channels, and <a href="tickers">tickers</a>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -71,8 +69,7 @@ channels, and <a href="tickers">tickers</a>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -86,13 +83,11 @@ same name.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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"><=</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="nx">requests</span> <span class="o"><-</span> <span class="nx">i</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nb">close</span><span class="p">(</span><span class="nx">requests</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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"><=</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"><-</span> <span class="nx">i</span>
|
||||
</span></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -105,9 +100,7 @@ our rate limiting scheme.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -120,12 +113,10 @@ before serving each request, we limit ourselves to
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="o"><-</span><span class="nx">limiter</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"request"</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="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="o"><-</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">"request"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -140,9 +131,7 @@ channel will allow bursts of up to 3 events.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -153,11 +142,9 @@ channel will allow bursts of up to 3 events.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><</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">burstyLimiter</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="p">}</span>
|
||||
</pre>
|
||||
<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"><</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"><-</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -169,13 +156,11 @@ value to <code>burstyLimiter</code>, up to its limit of 3.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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="nx">burstyLimiter</span> <span class="o"><-</span> <span class="nx">t</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}()</span>
|
||||
</pre>
|
||||
<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><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></span><span class="line"><span class="cl"> <span class="nx">burstyLimiter</span> <span class="o"><-</span> <span class="nx">t</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -188,18 +173,16 @@ of <code>burstyLimiter</code>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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"><=</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="nx">burstyRequests</span> <span class="o"><-</span> <span class="nx">i</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nb">close</span><span class="p">(</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 class="o"><-</span><span class="nx">burstyLimiter</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"request"</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="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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"><=</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"><-</span> <span class="nx">i</span>
|
||||
</span></span><span class="line"><span class="cl"> <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></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></span><span class="line"><span class="cl"> <span class="o"><-</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">"request"</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><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -215,13 +198,12 @@ handled once every ~200 milliseconds as desired.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run rate-limiting.go
|
||||
<span class="go">request 1 2012-10-19 00:38:18.687438 +0000 UTC
|
||||
</span><span class="go">request 2 2012-10-19 00:38:18.887471 +0000 UTC
|
||||
</span><span class="go">request 3 2012-10-19 00:38:19.087238 +0000 UTC
|
||||
</span><span class="go">request 4 2012-10-19 00:38:19.287338 +0000 UTC
|
||||
</span><span class="go">request 5 2012-10-19 00:38:19.487331 +0000 UTC</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -234,12 +216,11 @@ then serve the remaining 2 with ~200ms delays each.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="go">request 1 2012-10-19 00:38:20.487578 +0000 UTC
|
||||
</span><span class="go">request 2 2012-10-19 00:38:20.487645 +0000 UTC
|
||||
</span><span class="go">request 3 2012-10-19 00:38:20.487676 +0000 UTC
|
||||
</span><span class="go">request 4 2012-10-19 00:38:20.687483 +0000 UTC
|
||||
</span><span class="go">request 5 2012-10-19 00:38:20.887542 +0000 UTC</span></pre>
|
||||
<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></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
125
public/reading-files
generated
125
public/reading-files
generated
@ -44,8 +44,7 @@ reading files.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,13 +54,12 @@ reading files.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"bufio"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"io"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"bufio"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"io"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -73,13 +71,11 @@ This helper will streamline our error checks below.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -89,8 +85,7 @@ This helper will streamline our error checks below.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -102,11 +97,9 @@ slurping a file’s entire contents into memory.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"/tmp/dat"</span><span class="p">)</span>
|
||||
<span class="nf">check</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">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>
|
||||
<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">"/tmp/dat"</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><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -119,10 +112,8 @@ by <code>Open</code>ing a file to obtain an <code>os.File</code> value.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"/tmp/dat"</span><span class="p">)</span>
|
||||
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"/tmp/dat"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -135,12 +126,10 @@ actually were read.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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="nf">check</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">Printf</span><span class="p">(</span><span class="s">"%d bytes: %s\n"</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>
|
||||
<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></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></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><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">"%d bytes: %s\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -152,15 +141,13 @@ and <code>Read</code> from there.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nf">check</span><span class="p">(</span><span class="nx">err</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 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="nf">check</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">Printf</span><span class="p">(</span><span class="s">"%d bytes @ %d: "</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">"%v\n"</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>
|
||||
<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></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><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></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></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><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">"%d bytes @ %d: "</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">"%v\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -174,14 +161,12 @@ implemented with <code>ReadAtLeast</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nf">check</span><span class="p">(</span><span class="nx">err</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 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="nf">check</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">Printf</span><span class="p">(</span><span class="s">"%d bytes @ %d: %s\n"</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>
|
||||
<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></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><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></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></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><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">"%d bytes @ %d: %s\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -193,10 +178,8 @@ accomplishes this.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -210,12 +193,10 @@ reading methods it provides.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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="nf">check</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">Printf</span><span class="p">(</span><span class="s">"5 bytes: %s\n"</span><span class="p">,</span> <span class="nb">string</span><span class="p">(</span><span class="nx">b4</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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></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></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><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">"5 bytes: %s\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -228,10 +209,8 @@ be scheduled immediately after <code>Open</code>ing with
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">f</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -245,15 +224,15 @@ be scheduled immediately after <code>Open</code>ing with
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> echo "hello" > /tmp/dat
|
||||
<span class="gp">$</span> echo "go" >> /tmp/dat
|
||||
<span class="gp">$</span> go run reading-files.go
|
||||
<span class="go">hello
|
||||
</span><span class="go">go
|
||||
</span><span class="go">5 bytes: hello
|
||||
</span><span class="go">2 bytes @ 6: go
|
||||
</span><span class="go">2 bytes @ 6: go
|
||||
</span><span class="go">5 bytes: hello</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> echo "hello" > /tmp/dat
|
||||
</span></span><span class="line"><span class="cl"><span class="gp">$</span> echo "go" >> /tmp/dat
|
||||
</span></span><span class="line"><span class="cl"><span class="gp">$</span> go run reading-files.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">hello
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">go
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">5 bytes: hello
|
||||
</span></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><span class="go">5 bytes: hello</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
44
public/recover
generated
44
public/recover
generated
@ -61,8 +61,7 @@ does by default for HTTP servers.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -72,8 +71,7 @@ does by default for HTTP servers.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,11 +82,9 @@ does by default for HTTP servers.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">func</span> <span class="nf">mayPanic</span><span class="p">()</span> <span class="p">{</span>
|
||||
<span class="nb">panic</span><span class="p">(</span><span class="s">"a problem"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="nb">panic</span><span class="p">(</span><span class="s">"a problem"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -102,8 +98,7 @@ the panic.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -115,9 +110,8 @@ the call to <code>panic</code>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -127,10 +121,9 @@ the call to <code>panic</code>.</p>
|
||||
</td>
|
||||
<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">"Recovered. Error:\n"</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}()</span>
|
||||
</pre>
|
||||
<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">"Recovered. Error:\n"</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></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -140,8 +133,7 @@ the call to <code>panic</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"> <span class="nf">mayPanic</span><span class="p">()</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">mayPanic</span><span class="p">()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -154,10 +146,8 @@ panic and resumes in the deferred closure.</p>
|
||||
</td>
|
||||
<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="s">"After mayPanic()"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"After mayPanic()"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -171,9 +161,9 @@ panic and resumes in the deferred closure.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run recover.go
|
||||
<span class="go">Recovered. Error:
|
||||
</span><span class="go"> a problem</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run recover.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">Recovered. Error:
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> a problem</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
55
public/recursion
generated
55
public/recursion
generated
@ -44,8 +44,7 @@ Here’s a classic example.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,8 +54,7 @@ Here’s a classic example.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -68,14 +66,12 @@ base case of <code>fact(0)</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">if</span> <span class="nx">n</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span>
|
||||
<span class="k">return</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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">1</span>
|
||||
</span></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -85,9 +81,8 @@ base case of <code>fact(0)</code>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</pre>
|
||||
<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><span class="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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -100,9 +95,7 @@ before it’s defined.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -112,11 +105,10 @@ before it’s defined.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="k">if</span> <span class="nx">n</span> <span class="p"><</span> <span class="mi">2</span> <span class="p">{</span>
|
||||
<span class="k">return</span> <span class="nx">n</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">n</span> <span class="p"><</span> <span class="mi">2</span> <span class="p">{</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">n</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -128,10 +120,8 @@ knows which function to call with <code>fib</code> here.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -141,9 +131,8 @@ knows which function to call with <code>fib</code> here.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -157,9 +146,9 @@ knows which function to call with <code>fib</code> here.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run recursion.go
|
||||
<span class="go">5040
|
||||
</span><span class="go">13</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run recursion.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">5040
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">13</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
113
public/regular-expressions
generated
113
public/regular-expressions
generated
@ -44,8 +44,7 @@ in Go.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,12 +54,11 @@ in Go.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"bytes"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"regexp"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"bytes"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"regexp"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -70,8 +68,7 @@ in Go.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -82,10 +79,8 @@ in Go.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"p([a-z]+)ch"</span><span class="p">,</span> <span class="s">"peach"</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">match</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"p([a-z]+)ch"</span><span class="p">,</span> <span class="s">"peach"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -98,9 +93,7 @@ optimized <code>Regexp</code> struct.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"p([a-z]+)ch"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"p([a-z]+)ch"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -112,9 +105,7 @@ a match test like we saw earlier.</p>
|
||||
</td>
|
||||
<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">r</span><span class="p">.</span><span class="nf">MatchString</span><span class="p">(</span><span class="s">"peach"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"peach"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -125,9 +116,7 @@ a match test like we saw earlier.</p>
|
||||
</td>
|
||||
<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">r</span><span class="p">.</span><span class="nf">FindString</span><span class="p">(</span><span class="s">"peach punch"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"peach punch"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -140,9 +129,7 @@ matching text.</p>
|
||||
</td>
|
||||
<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">"idx:"</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">"peach punch"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"idx:"</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">"peach punch"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -156,9 +143,7 @@ information for both <code>p([a-z]+)ch</code> and <code>([a-z]+)</code>.</p>
|
||||
</td>
|
||||
<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">r</span><span class="p">.</span><span class="nf">FindStringSubmatch</span><span class="p">(</span><span class="s">"peach punch"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"peach punch"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -170,9 +155,7 @@ indexes of matches and submatches.</p>
|
||||
</td>
|
||||
<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">r</span><span class="p">.</span><span class="nf">FindStringSubmatchIndex</span><span class="p">(</span><span class="s">"peach punch"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"peach punch"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -185,9 +168,7 @@ example to find all matches for a regexp.</p>
|
||||
</td>
|
||||
<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">r</span><span class="p">.</span><span class="nf">FindAllString</span><span class="p">(</span><span class="s">"peach punch pinch"</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"peach punch pinch"</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -199,10 +180,8 @@ functions we saw above as well.</p>
|
||||
</td>
|
||||
<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">"all:"</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="s">"peach punch pinch"</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"all:"</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">"peach punch pinch"</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -215,9 +194,7 @@ of matches.</p>
|
||||
</td>
|
||||
<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">r</span><span class="p">.</span><span class="nf">FindAllString</span><span class="p">(</span><span class="s">"peach punch pinch"</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"peach punch pinch"</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -231,9 +208,7 @@ function name.</p>
|
||||
</td>
|
||||
<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">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">"peach"</span><span class="p">)))</span>
|
||||
</pre>
|
||||
<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">"peach"</span><span class="p">)))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -248,10 +223,8 @@ global variables.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"p([a-z]+)ch"</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">"regexp:"</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"p([a-z]+)ch"</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">"regexp:"</span><span class="p">,</span> <span class="nx">r</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -263,9 +236,7 @@ subsets of strings with other values.</p>
|
||||
</td>
|
||||
<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">r</span><span class="p">.</span><span class="nf">ReplaceAllString</span><span class="p">(</span><span class="s">"a peach"</span><span class="p">,</span> <span class="s">"<fruit>"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"a peach"</span><span class="p">,</span> <span class="s">"<fruit>"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -277,12 +248,10 @@ text with a given function.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"a peach"</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 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>
|
||||
</pre>
|
||||
<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">"a peach"</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></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><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -296,20 +265,20 @@ text with a given function.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run regular-expressions.go
|
||||
<span class="go">true
|
||||
</span><span class="go">true
|
||||
</span><span class="go">peach
|
||||
</span><span class="go">idx: [0 5]
|
||||
</span><span class="go">[peach ea]
|
||||
</span><span class="go">[0 5 1 3]
|
||||
</span><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 class="go">[peach punch]
|
||||
</span><span class="go">true
|
||||
</span><span class="go">regexp: p([a-z]+)ch
|
||||
</span><span class="go">a <fruit>
|
||||
</span><span class="go">a PEACH</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run regular-expressions.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">peach
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">idx: [0 5]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">[peach ea]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">[0 5 1 3]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">[peach punch pinch]
|
||||
</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></span><span class="line"><span class="cl"><span class="go">[peach punch]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">regexp: p([a-z]+)ch
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">a <fruit>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">a PEACH</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
69
public/select
generated
69
public/select
generated
@ -44,8 +44,7 @@ select is a powerful feature of Go.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,11 +54,10 @@ select is a powerful feature of Go.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,8 +67,7 @@ select is a powerful feature of Go.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -81,10 +78,8 @@ select is a powerful feature of Go.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,16 +92,14 @@ executing in concurrent goroutines.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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">c1</span> <span class="o"><-</span> <span class="s">"one"</span>
|
||||
<span class="p">}()</span>
|
||||
<span class="k">go</span> <span class="kd">func</span><span class="p">()</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 class="nx">c2</span> <span class="o"><-</span> <span class="s">"two"</span>
|
||||
<span class="p">}()</span>
|
||||
</pre>
|
||||
<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><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></span><span class="line"><span class="cl"> <span class="nx">c1</span> <span class="o"><-</span> <span class="s">"one"</span>
|
||||
</span></span><span class="line"><span class="cl"> <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></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></span><span class="line"><span class="cl"> <span class="nx">c2</span> <span class="o"><-</span> <span class="s">"two"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -118,17 +111,15 @@ simultaneously, printing each one as it arrives.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><</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">select</span> <span class="p">{</span>
|
||||
<span class="k">case</span> <span class="nx">msg1</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">c1</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">"received"</span><span class="p">,</span> <span class="nx">msg1</span><span class="p">)</span>
|
||||
<span class="k">case</span> <span class="nx">msg2</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">c2</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">"received"</span><span class="p">,</span> <span class="nx">msg2</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><</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></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">msg1</span> <span class="o">:=</span> <span class="o"><-</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">"received"</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"><-</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">"received"</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -144,10 +135,9 @@ expected.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> time go run select.go
|
||||
<span class="go">received one
|
||||
</span><span class="go">received two</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> time go run select.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">received one
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">received two</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -160,8 +150,7 @@ concurrently.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="go">real 0m2.245s</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="go">real 0m2.245s</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
44
public/sha256-hashes
generated
44
public/sha256-hashes
generated
@ -46,8 +46,7 @@ SHA256 hashes in Go.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -59,12 +58,10 @@ SHA256 hashes in Go.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"crypto/sha256"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"crypto/sha256"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -74,9 +71,8 @@ SHA256 hashes in Go.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">s</span> <span class="o">:=</span> <span class="s">"sha256 this string"</span>
|
||||
</pre>
|
||||
<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><span class="line"><span class="cl"> <span class="nx">s</span> <span class="o">:=</span> <span class="s">"sha256 this string"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -87,9 +83,7 @@ SHA256 hashes in Go.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -101,9 +95,7 @@ use <code>[]byte(s)</code> to coerce it to bytes.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -116,9 +108,7 @@ to an existing byte slice: it usually isn’t needed.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -128,10 +118,9 @@ to an existing byte slice: it usually isn’t needed.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"%x\n"</span><span class="p">,</span> <span class="nx">bs</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"%x\n"</span><span class="p">,</span> <span class="nx">bs</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -147,10 +136,9 @@ a human-readable hex format.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run sha256-hashes.go
|
||||
<span class="go">sha256 this string
|
||||
</span><span class="go">1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run sha256-hashes.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">sha256 this string
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
66
public/signals
generated
66
public/signals
generated
@ -47,8 +47,7 @@ Here’s how to handle signals in Go with channels.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -58,13 +57,12 @@ Here’s how to handle signals in Go with channels.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="s">"os/signal"</span>
|
||||
<span class="s">"syscall"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os/signal"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"syscall"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -74,8 +72,7 @@ Here’s how to handle signals in Go with channels.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -89,9 +86,7 @@ should be buffered.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -103,9 +98,7 @@ receive notifications of the specified signals.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -119,9 +112,7 @@ a more realistic scenario of graceful shutdown.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -134,8 +125,7 @@ and then notify the program that it can finish.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -145,12 +135,11 @@ and then notify the program that it can finish.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"> <span class="nx">sig</span> <span class="o">:=</span> <span class="o"><-</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 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"><-</span> <span class="kc">true</span>
|
||||
<span class="p">}()</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">sig</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">sigs</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><span class="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></span><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o"><-</span> <span class="kc">true</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -163,12 +152,10 @@ above sending a value on <code>done</code>) and then exit.</p>
|
||||
</td>
|
||||
<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="s">"awaiting signal"</span><span class="p">)</span>
|
||||
<span class="o"><-</span><span class="nx">done</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"exiting"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"awaiting signal"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="o"><-</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">"exiting"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -186,12 +173,11 @@ causing the program to print <code>interrupt</code> and then exit.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run signals.go
|
||||
<span class="go">awaiting signal
|
||||
</span><span class="go">^C
|
||||
</span><span class="go">interrupt
|
||||
</span><span class="go">exiting</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run signals.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">awaiting signal
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">^C
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">interrupt
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">exiting</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
126
public/slices
generated
126
public/slices
generated
@ -43,8 +43,7 @@ a more powerful interface to sequences than arrays.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,8 +53,7 @@ a more powerful interface to sequences than arrays.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -65,8 +63,7 @@ a more powerful interface to sequences than arrays.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -80,10 +77,8 @@ length 0.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">var</span> <span class="nx">s</span> <span class="p">[]</span><span class="kt">string</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"uninit:"</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>
|
||||
<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></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">"uninit:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -100,10 +95,8 @@ as an additional parameter to <code>make</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"emp:"</span><span class="p">,</span> <span class="nx">s</span><span class="p">,</span> <span class="s">"len:"</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">"cap:"</span><span class="p">,</span> <span class="nb">cap</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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></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">"emp:"</span><span class="p">,</span> <span class="nx">s</span><span class="p">,</span> <span class="s">"len:"</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">"cap:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -114,13 +107,11 @@ as an additional parameter to <code>make</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"a"</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">"b"</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">"c"</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"set:"</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">"get:"</span><span class="p">,</span> <span class="nx">s</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
||||
</pre>
|
||||
<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">"a"</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">"b"</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">"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">"set:"</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">"get:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -131,9 +122,7 @@ as an additional parameter to <code>make</code>.</p>
|
||||
</td>
|
||||
<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">"len:"</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"len:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -149,11 +138,9 @@ Note that we need to accept a return value from
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"d"</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">"e"</span><span class="p">,</span> <span class="s">"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="s">"apd:"</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"d"</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">"e"</span><span class="p">,</span> <span class="s">"f"</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">"apd:"</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -166,11 +153,9 @@ into <code>c</code> from <code>s</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"cpy:"</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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></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">"cpy:"</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -183,10 +168,8 @@ of the elements <code>s[2]</code>, <code>s[3]</code>, and <code>s[4]</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"sl1:"</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"sl1:"</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -197,10 +180,8 @@ of the elements <code>s[2]</code>, <code>s[3]</code>, and <code>s[4]</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"sl2:"</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"sl2:"</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -211,10 +192,8 @@ of the elements <code>s[2]</code>, <code>s[3]</code>, and <code>s[4]</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"sl3:"</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"sl3:"</span><span class="p">,</span> <span class="nx">l</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -226,10 +205,8 @@ in a single line as well.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"g"</span><span class="p">,</span> <span class="s">"h"</span><span class="p">,</span> <span class="s">"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">"dcl:"</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"g"</span><span class="p">,</span> <span class="s">"h"</span><span class="p">,</span> <span class="s">"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">"dcl:"</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -242,18 +219,16 @@ vary, unlike with multi-dimensional arrays.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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"><</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">innerLen</span> <span class="o">:=</span> <span class="nx">i</span> <span class="o">+</span> <span class="mi">1</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 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"><</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="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="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">"2d: "</span><span class="p">,</span> <span class="nx">twoD</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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"><</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></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></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"><</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <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">"2d: "</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -269,20 +244,19 @@ they are rendered similarly by <code>fmt.Println</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run slices.go
|
||||
<span class="go">uninit: [] true true
|
||||
</span><span class="go">emp: [ ] len: 3 cap: 3
|
||||
</span><span class="go">set: [a b c]
|
||||
</span><span class="go">get: c
|
||||
</span><span class="go">len: 3
|
||||
</span><span class="go">apd: [a b c d e f]
|
||||
</span><span class="go">cpy: [a b c d e f]
|
||||
</span><span class="go">sl1: [c d e]
|
||||
</span><span class="go">sl2: [a b c d e]
|
||||
</span><span class="go">sl3: [c d e f]
|
||||
</span><span class="go">dcl: [g h i]
|
||||
</span><span class="go">2d: [[0] [1 2] [2 3 4]]</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run slices.go
|
||||
</span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><span class="go">set: [a b c]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">get: c
|
||||
</span></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
48
public/sorting
generated
48
public/sorting
generated
@ -44,8 +44,7 @@ builtins first.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,11 +54,10 @@ builtins first.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"sort"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"sort"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,8 +67,7 @@ builtins first.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,11 +81,9 @@ return a new one.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"c"</span><span class="p">,</span> <span class="s">"a"</span><span class="p">,</span> <span class="s">"b"</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Strings:"</span><span class="p">,</span> <span class="nx">strs</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"c"</span><span class="p">,</span> <span class="s">"a"</span><span class="p">,</span> <span class="s">"b"</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></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">"Strings:"</span><span class="p">,</span> <span class="nx">strs</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -99,11 +94,9 @@ return a new one.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Ints: "</span><span class="p">,</span> <span class="nx">ints</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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></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">"Ints: "</span><span class="p">,</span> <span class="nx">ints</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -115,11 +108,9 @@ already in sorted order.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Sorted: "</span><span class="p">,</span> <span class="nx">s</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"Sorted: "</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -135,11 +126,10 @@ slices and <code>true</code> as the result of our <code>AreSorted</code> test.</
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run sorting.go
|
||||
<span class="go">Strings: [a b c]
|
||||
</span><span class="go">Ints: [2 4 7]
|
||||
</span><span class="go">Sorted: true</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run sorting.go
|
||||
</span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><span class="go">Sorted: true</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
53
public/sorting-by-functions
generated
53
public/sorting-by-functions
generated
@ -46,8 +46,7 @@ in Go.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -57,11 +56,10 @@ in Go.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"sort"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"sort"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -75,9 +73,7 @@ type.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">byLength</span> <span class="p">[]</span><span class="kt">string</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -94,17 +90,15 @@ we use <code>len(s[i])</code> and <code>len(s[j])</code> here.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</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 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="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 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"><</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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><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></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></span><span class="line"><span class="cl"><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></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"><</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -118,13 +112,11 @@ slice.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">func</span> <span class="nf">main</span><span class="p">()</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">"peach"</span><span class="p">,</span> <span class="s">"banana"</span><span class="p">,</span> <span class="s">"kiwi"</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 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="p">}</span>
|
||||
</pre>
|
||||
<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><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">"peach"</span><span class="p">,</span> <span class="s">"banana"</span><span class="p">,</span> <span class="s">"kiwi"</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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -140,9 +132,8 @@ length, as desired.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run sorting-by-functions.go
|
||||
<span class="go">[kiwi peach banana]</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
125
public/spawning-processes
generated
125
public/spawning-processes
generated
@ -43,8 +43,7 @@ processes.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,12 +53,11 @@ processes.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"io"</span>
|
||||
<span class="s">"os/exec"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"io"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os/exec"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,8 +67,7 @@ processes.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,9 +81,7 @@ to represent this external process.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"date"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"date"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -100,14 +95,12 @@ with the date info.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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 class="p">}</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"> date"</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">dateOut</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <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">"> date"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -122,19 +115,17 @@ code.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"date"</span><span class="p">,</span> <span class="s">"-x"</span><span class="p">).</span><span class="nf">Output</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 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">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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"failed executing:"</span><span class="p">,</span> <span class="nx">err</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"command exit rc ="</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="k">default</span><span class="p">:</span>
|
||||
<span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"date"</span><span class="p">,</span> <span class="s">"-x"</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></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></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></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">"failed executing:"</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></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">"command exit rc ="</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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -147,9 +138,7 @@ where we pipe data to the external process on its
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"grep"</span><span class="p">,</span> <span class="s">"hello"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"grep"</span><span class="p">,</span> <span class="s">"hello"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -163,15 +152,13 @@ to exit.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">grepCmd</span><span class="p">.</span><span class="nf">Start</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">"hello grep\ngoodbye grep"</span><span class="p">))</span>
|
||||
<span class="nx">grepIn</span><span class="p">.</span><span class="nf">Close</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 class="nx">grepCmd</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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></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></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></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">"hello grep\ngoodbye grep"</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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -186,10 +173,8 @@ exactly the same way.</p>
|
||||
</td>
|
||||
<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">"> grep hello"</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">grepBytes</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"> grep hello"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -205,16 +190,14 @@ option:</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"bash"</span><span class="p">,</span> <span class="s">"-c"</span><span class="p">,</span> <span class="s">"ls -a -l -h"</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 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 class="p">}</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"> ls -a -l -h"</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 class="p">}</span>
|
||||
</pre>
|
||||
<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">"bash"</span><span class="p">,</span> <span class="s">"-c"</span><span class="p">,</span> <span class="s">"ls -a -l -h"</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></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></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></span><span class="line"><span class="cl"> <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">"> ls -a -l -h"</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -230,10 +213,9 @@ as if we had run them directly from the command-line.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run spawning-processes.go
|
||||
<span class="gp">></span> date
|
||||
<span class="go">Thu 05 May 2022 10:10:12 PM PDT</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run spawning-processes.go
|
||||
</span></span><span class="line"><span class="cl"><span class="gp">></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -245,10 +227,9 @@ an error message and non-zero return code.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="go">command exited with rc = 1
|
||||
</span><span class="go"></span><span class="gp">></span> grep hello
|
||||
<span class="go">hello grep</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="go">command exited with rc = 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"></span><span class="gp">></span> grep hello
|
||||
</span></span><span class="line"><span class="cl"><span class="go">hello grep</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -258,10 +239,10 @@ an error message and non-zero return code.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">></span> ls -a -l -h
|
||||
<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 class="go">-rw-r--r-- 1 mark 1.3K Oct 3 16:28 spawning-processes.go</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">></span> ls -a -l -h
|
||||
</span></span><span class="line"><span class="cl"><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></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>
|
||||
</tr>
|
||||
|
||||
|
158
public/stateful-goroutines
generated
158
public/stateful-goroutines
generated
@ -49,8 +49,7 @@ by exactly 1 goroutine.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -60,13 +59,12 @@ by exactly 1 goroutine.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"math/rand"</span>
|
||||
<span class="s">"sync/atomic"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"math/rand"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"sync/atomic"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,17 +82,15 @@ goroutine to respond.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">readOp</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">key</span> <span class="kt">int</span>
|
||||
<span class="nx">resp</span> <span class="kd">chan</span> <span class="kt">int</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 class="nx">key</span> <span class="kt">int</span>
|
||||
<span class="nx">val</span> <span class="kt">int</span>
|
||||
<span class="nx">resp</span> <span class="kd">chan</span> <span class="kt">bool</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -104,8 +100,7 @@ goroutine to respond.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -116,10 +111,8 @@ goroutine to respond.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">var</span> <span class="nx">readOps</span> <span class="kt">uint64</span>
|
||||
<span class="kd">var</span> <span class="nx">writeOps</span> <span class="kt">uint64</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -132,10 +125,8 @@ respectively.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -154,20 +145,18 @@ value in the case of <code>reads</code>).</p>
|
||||
</td>
|
||||
<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>
|
||||
<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="k">for</span> <span class="p">{</span>
|
||||
<span class="k">select</span> <span class="p">{</span>
|
||||
<span class="k">case</span> <span class="nx">read</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">reads</span><span class="p">:</span>
|
||||
<span class="nx">read</span><span class="p">.</span><span class="nx">resp</span> <span class="o"><-</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="k">case</span> <span class="nx">write</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">writes</span><span class="p">:</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 class="nx">write</span><span class="p">.</span><span class="nx">resp</span> <span class="o"><-</span> <span class="kc">true</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}()</span>
|
||||
</pre>
|
||||
<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><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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">read</span> <span class="o">:=</span> <span class="o"><-</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"><-</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"><-</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></span><span class="line"><span class="cl"> <span class="nx">write</span><span class="p">.</span><span class="nx">resp</span> <span class="o"><-</span> <span class="kc">true</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -182,21 +171,19 @@ result over the provided <code>resp</code> channel.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><</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">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 class="nx">read</span> <span class="o">:=</span> <span class="nx">readOp</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 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">reads</span> <span class="o"><-</span> <span class="nx">read</span>
|
||||
<span class="o"><-</span><span class="nx">read</span><span class="p">.</span><span class="nx">resp</span>
|
||||
<span class="nx">atomic</span><span class="p">.</span><span class="nf">AddUint64</span><span class="p">(</span><span class="o">&</span><span class="nx">readOps</span><span class="p">,</span> <span class="mi">1</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 class="p">}</span>
|
||||
<span class="p">}()</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><</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></span><span class="line"><span class="cl"> <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></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></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></span><span class="line"><span class="cl"> <span class="nx">reads</span> <span class="o"><-</span> <span class="nx">read</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="o"><-</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">&</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -208,22 +195,20 @@ approach.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><</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">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 class="nx">write</span> <span class="o">:=</span> <span class="nx">writeOp</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 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">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">writes</span> <span class="o"><-</span> <span class="nx">write</span>
|
||||
<span class="o"><-</span><span class="nx">write</span><span class="p">.</span><span class="nx">resp</span>
|
||||
<span class="nx">atomic</span><span class="p">.</span><span class="nf">AddUint64</span><span class="p">(</span><span class="o">&</span><span class="nx">writeOps</span><span class="p">,</span> <span class="mi">1</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 class="p">}</span>
|
||||
<span class="p">}()</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><</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></span><span class="line"><span class="cl"> <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></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></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></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></span><span class="line"><span class="cl"> <span class="nx">writes</span> <span class="o"><-</span> <span class="nx">write</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="o"><-</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">&</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -234,9 +219,7 @@ approach.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -247,13 +230,11 @@ approach.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">&</span><span class="nx">readOps</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">"readOps:"</span><span class="p">,</span> <span class="nx">readOpsFinal</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">&</span><span class="nx">writeOps</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">"writeOps:"</span><span class="p">,</span> <span class="nx">writeOpsFinal</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">&</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">"readOps:"</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">&</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">"writeOps:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -270,10 +251,9 @@ total operations.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run stateful-goroutines.go
|
||||
<span class="go">readOps: 71708
|
||||
</span><span class="go">writeOps: 7177</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run stateful-goroutines.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">readOps: 71708
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">writeOps: 7177</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
166
public/string-formatting
generated
166
public/string-formatting
generated
@ -44,8 +44,7 @@ common string formatting tasks.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,11 +54,10 @@ common string formatting tasks.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,10 +67,9 @@ common string formatting tasks.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">x</span><span class="p">,</span> <span class="nx">y</span> <span class="kt">int</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -82,8 +79,7 @@ common string formatting tasks.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -96,10 +92,8 @@ an instance of our <code>point</code> struct.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"struct1: %v\n"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"struct1: %v\n"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -111,9 +105,7 @@ include the struct’s field names.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"struct2: %+v\n"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"struct2: %+v\n"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -126,9 +118,7 @@ would produce that value.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"struct3: %#v\n"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"struct3: %#v\n"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -139,9 +129,7 @@ would produce that value.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"type: %T\n"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"type: %T\n"</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -152,9 +140,7 @@ would produce that value.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"bool: %t\n"</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"bool: %t\n"</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -166,9 +152,7 @@ Use <code>%d</code> for standard, base-10 formatting.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"int: %d\n"</span><span class="p">,</span> <span class="mi">123</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"int: %d\n"</span><span class="p">,</span> <span class="mi">123</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -179,9 +163,7 @@ Use <code>%d</code> for standard, base-10 formatting.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"bin: %b\n"</span><span class="p">,</span> <span class="mi">14</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"bin: %b\n"</span><span class="p">,</span> <span class="mi">14</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -193,9 +175,7 @@ given integer.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"char: %c\n"</span><span class="p">,</span> <span class="mi">33</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"char: %c\n"</span><span class="p">,</span> <span class="mi">33</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -206,9 +186,7 @@ given integer.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"hex: %x\n"</span><span class="p">,</span> <span class="mi">456</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"hex: %x\n"</span><span class="p">,</span> <span class="mi">456</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -220,9 +198,7 @@ floats. For basic decimal formatting use <code>%f</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"float1: %f\n"</span><span class="p">,</span> <span class="mf">78.9</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"float1: %f\n"</span><span class="p">,</span> <span class="mf">78.9</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -234,10 +210,8 @@ different versions of) scientific notation.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"float2: %e\n"</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">"float3: %E\n"</span><span class="p">,</span> <span class="mf">123400000.0</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"float2: %e\n"</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">"float3: %E\n"</span><span class="p">,</span> <span class="mf">123400000.0</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -248,9 +222,7 @@ different versions of) scientific notation.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"str1: %s\n"</span><span class="p">,</span> <span class="s">"\"string\""</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"str1: %s\n"</span><span class="p">,</span> <span class="s">"\"string\""</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -261,9 +233,7 @@ different versions of) scientific notation.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"str2: %q\n"</span><span class="p">,</span> <span class="s">"\"string\""</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"str2: %q\n"</span><span class="p">,</span> <span class="s">"\"string\""</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -276,9 +246,7 @@ per byte of input.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"str3: %x\n"</span><span class="p">,</span> <span class="s">"hex this"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"str3: %x\n"</span><span class="p">,</span> <span class="s">"hex this"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -289,9 +257,7 @@ per byte of input.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"pointer: %p\n"</span><span class="p">,</span> <span class="o">&</span><span class="nx">p</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"pointer: %p\n"</span><span class="p">,</span> <span class="o">&</span><span class="nx">p</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -307,9 +273,7 @@ spaces.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"width1: |%6d|%6d|\n"</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">345</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"width1: |%6d|%6d|\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -323,9 +287,7 @@ width.precision syntax.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"width2: |%6.2f|%6.2f|\n"</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>
|
||||
<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">"width2: |%6.2f|%6.2f|\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -336,9 +298,7 @@ width.precision syntax.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"width3: |%-6.2f|%-6.2f|\n"</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>
|
||||
<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">"width3: |%-6.2f|%-6.2f|\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -351,9 +311,7 @@ table-like output. For basic right-justified width.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"width4: |%6s|%6s|\n"</span><span class="p">,</span> <span class="s">"foo"</span><span class="p">,</span> <span class="s">"b"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"width4: |%6s|%6s|\n"</span><span class="p">,</span> <span class="s">"foo"</span><span class="p">,</span> <span class="s">"b"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -364,9 +322,7 @@ table-like output. For basic right-justified width.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"width5: |%-6s|%-6s|\n"</span><span class="p">,</span> <span class="s">"foo"</span><span class="p">,</span> <span class="s">"b"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"width5: |%-6s|%-6s|\n"</span><span class="p">,</span> <span class="s">"foo"</span><span class="p">,</span> <span class="s">"b"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -379,10 +335,8 @@ and returns a string without printing it anywhere.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"sprintf: a %s"</span><span class="p">,</span> <span class="s">"string"</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>
|
||||
</pre>
|
||||
<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">"sprintf: a %s"</span><span class="p">,</span> <span class="s">"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">s</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -394,10 +348,8 @@ and returns a string without printing it anywhere.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"io: an %s\n"</span><span class="p">,</span> <span class="s">"error"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"io: an %s\n"</span><span class="p">,</span> <span class="s">"error"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -411,30 +363,30 @@ and returns a string without printing it anywhere.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run string-formatting.go
|
||||
<span class="go">struct1: {1 2}
|
||||
</span><span class="go">struct2: {x:1 y:2}
|
||||
</span><span class="go">struct3: main.point{x:1, y:2}
|
||||
</span><span class="go">type: main.point
|
||||
</span><span class="go">bool: true
|
||||
</span><span class="go">int: 123
|
||||
</span><span class="go">bin: 1110
|
||||
</span><span class="go">char: !
|
||||
</span><span class="go">hex: 1c8
|
||||
</span><span class="go">float1: 78.900000
|
||||
</span><span class="go">float2: 1.234000e+08
|
||||
</span><span class="go">float3: 1.234000E+08
|
||||
</span><span class="go">str1: "string"
|
||||
</span><span class="go">str2: "\"string\""
|
||||
</span><span class="go">str3: 6865782074686973
|
||||
</span><span class="go">pointer: 0xc0000ba000
|
||||
</span><span class="go">width1: | 12| 345|
|
||||
</span><span class="go">width2: | 1.20| 3.45|
|
||||
</span><span class="go">width3: |1.20 |3.45 |
|
||||
</span><span class="go">width4: | foo| b|
|
||||
</span><span class="go">width5: |foo |b |
|
||||
</span><span class="go">sprintf: a string
|
||||
</span><span class="go">io: an error</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run string-formatting.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">struct1: {1 2}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">struct2: {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></span><span class="line"><span class="cl"><span class="go">type: main.point
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">bool: true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">int: 123
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">bin: 1110
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">char: !
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">hex: 1c8
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">float1: 78.900000
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">float2: 1.234000e+08
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">float3: 1.234000E+08
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">str1: "string"
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">str2: "\"string\""
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">str3: 6865782074686973
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">pointer: 0xc0000ba000
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">width1: | 12| 345|
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">width2: | 1.20| 3.45|
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">width3: |1.20 |3.45 |
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">width4: | foo| b|
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">width5: |foo |b |
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">sprintf: a string
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">io: an error</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
73
public/string-functions
generated
73
public/string-functions
generated
@ -44,8 +44,7 @@ to give you a sense of the package.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,11 +54,10 @@ to give you a sense of the package.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="nx">s</span> <span class="s">"strings"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="nx">s</span> <span class="s">"strings"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -71,9 +69,7 @@ it a lot below.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -83,8 +79,7 @@ it a lot below.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -101,21 +96,19 @@ package docs.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nf">p</span><span class="p">(</span><span class="s">"Contains: "</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">"test"</span><span class="p">,</span> <span class="s">"es"</span><span class="p">))</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="s">"Count: "</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">"test"</span><span class="p">,</span> <span class="s">"t"</span><span class="p">))</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="s">"HasPrefix: "</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">"test"</span><span class="p">,</span> <span class="s">"te"</span><span class="p">))</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="s">"HasSuffix: "</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">"test"</span><span class="p">,</span> <span class="s">"st"</span><span class="p">))</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="s">"Index: "</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">"test"</span><span class="p">,</span> <span class="s">"e"</span><span class="p">))</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="s">"Join: "</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">"a"</span><span class="p">,</span> <span class="s">"b"</span><span class="p">},</span> <span class="s">"-"</span><span class="p">))</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="s">"Repeat: "</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">"a"</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">"Replace: "</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">"foo"</span><span class="p">,</span> <span class="s">"o"</span><span class="p">,</span> <span class="s">"0"</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">"Replace: "</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">"foo"</span><span class="p">,</span> <span class="s">"o"</span><span class="p">,</span> <span class="s">"0"</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">"Split: "</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">"a-b-c-d-e"</span><span class="p">,</span> <span class="s">"-"</span><span class="p">))</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="s">"ToLower: "</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">"TEST"</span><span class="p">))</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="s">"ToUpper: "</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">"test"</span><span class="p">))</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nf">p</span><span class="p">(</span><span class="s">"Contains: "</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">"test"</span><span class="p">,</span> <span class="s">"es"</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">"Count: "</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">"test"</span><span class="p">,</span> <span class="s">"t"</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">"HasPrefix: "</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">"test"</span><span class="p">,</span> <span class="s">"te"</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">"HasSuffix: "</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">"test"</span><span class="p">,</span> <span class="s">"st"</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">"Index: "</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">"test"</span><span class="p">,</span> <span class="s">"e"</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">"Join: "</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">"a"</span><span class="p">,</span> <span class="s">"b"</span><span class="p">},</span> <span class="s">"-"</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">"Repeat: "</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">"a"</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">"Replace: "</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">"foo"</span><span class="p">,</span> <span class="s">"o"</span><span class="p">,</span> <span class="s">"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="nf">p</span><span class="p">(</span><span class="s">"Replace: "</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">"foo"</span><span class="p">,</span> <span class="s">"o"</span><span class="p">,</span> <span class="s">"0"</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">"Split: "</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">"a-b-c-d-e"</span><span class="p">,</span> <span class="s">"-"</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">"ToLower: "</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">"TEST"</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">"ToUpper: "</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">"test"</span><span class="p">))</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -129,19 +122,19 @@ package docs.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run string-functions.go
|
||||
<span class="go">Contains: true
|
||||
</span><span class="go">Count: 2
|
||||
</span><span class="go">HasPrefix: true
|
||||
</span><span class="go">HasSuffix: true
|
||||
</span><span class="go">Index: 1
|
||||
</span><span class="go">Join: a-b
|
||||
</span><span class="go">Repeat: aaaaa
|
||||
</span><span class="go">Replace: f00
|
||||
</span><span class="go">Replace: f0o
|
||||
</span><span class="go">Split: [a b c d e]
|
||||
</span><span class="go">ToLower: test
|
||||
</span><span class="go">ToUpper: TEST</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run string-functions.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">Contains: true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Count: 2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">HasPrefix: true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">HasSuffix: true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Index: 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Join: a-b
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Repeat: aaaaa
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Replace: f00
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Replace: f0o
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Split: [a b c d e]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">ToLower: test
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">ToUpper: TEST</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
120
public/strings-and-runes
generated
120
public/strings-and-runes
generated
@ -49,8 +49,7 @@ introduction to the topic.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -60,11 +59,10 @@ introduction to the topic.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"unicode/utf8"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"unicode/utf8"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -74,8 +72,7 @@ introduction to the topic.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -89,9 +86,7 @@ encoded text.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">const</span> <span class="nx">s</span> <span class="p">=</span> <span class="s">"สวัสดี"</span>
|
||||
</pre>
|
||||
<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">"สวัสดี"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -103,9 +98,7 @@ will produce the length of the raw bytes stored within.</p>
|
||||
</td>
|
||||
<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">"Len:"</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">s</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"Len:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -118,12 +111,10 @@ the bytes that constitute the code points in <code>s</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><</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="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"%x "</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">}</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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"><</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">"%x "</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -139,9 +130,7 @@ code points, so the result of this count may be surprising.</p>
|
||||
</td>
|
||||
<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">"Rune count:"</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>
|
||||
<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">"Rune count:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -153,11 +142,9 @@ each <code>rune</code> along with its offset in the string.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"%#U starts at %d\n"</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="p">}</span>
|
||||
</pre>
|
||||
<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></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">"%#U starts at %d\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -169,13 +156,11 @@ each <code>rune</code> along with its offset in the string.</p>
|
||||
</td>
|
||||
<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">"\nUsing DecodeRuneInString"</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"><</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="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">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"%#U starts at %d\n"</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">w</span> <span class="p">=</span> <span class="nx">width</span>
|
||||
</pre>
|
||||
<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">"\nUsing DecodeRuneInString"</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"><</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></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">"%#U starts at %d\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -186,11 +171,9 @@ each <code>rune</code> along with its offset in the string.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nf">examineRune</span><span class="p">(</span><span class="nx">runeValue</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -200,8 +183,7 @@ each <code>rune</code> along with its offset in the string.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -213,14 +195,12 @@ can compare a <code>rune</code> value to a rune literal directly.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">if</span> <span class="nx">r</span> <span class="o">==</span> <span class="sc">'t'</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">"found tee"</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">'ส'</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">"found so sua"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">'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">"found tee"</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">'ส'</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">"found so sua"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -234,16 +214,16 @@ can compare a <code>rune</code> value to a rune literal directly.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run strings-and-runes.go
|
||||
<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 class="go">Rune count: 6
|
||||
</span><span class="go">U+0E2A 'ส' starts at 0
|
||||
</span><span class="go">U+0E27 'ว' starts at 3
|
||||
</span><span class="go">U+0E31 'ั' starts at 6
|
||||
</span><span class="go">U+0E2A 'ส' starts at 9
|
||||
</span><span class="go">U+0E14 'ด' starts at 12
|
||||
</span><span class="go">U+0E35 'ี' starts at 15</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run strings-and-runes.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">Len: 18
|
||||
</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></span><span class="line"><span class="cl"><span class="go">Rune count: 6
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E2A 'ส' starts at 0
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E27 'ว' starts at 3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E31 'ั' starts at 6
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E2A 'ส' starts at 9
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E14 'ด' starts at 12
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E35 'ี' starts at 15</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -253,15 +233,15 @@ can compare a <code>rune</code> value to a rune literal directly.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="go">Using DecodeRuneInString
|
||||
</span><span class="go">U+0E2A 'ส' starts at 0
|
||||
</span><span class="go">found so sua
|
||||
</span><span class="go">U+0E27 'ว' starts at 3
|
||||
</span><span class="go">U+0E31 'ั' starts at 6
|
||||
</span><span class="go">U+0E2A 'ส' starts at 9
|
||||
</span><span class="go">found so sua
|
||||
</span><span class="go">U+0E14 'ด' starts at 12
|
||||
</span><span class="go">U+0E35 'ี' starts at 15</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="go">Using DecodeRuneInString
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E2A 'ส' starts at 0
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">found so sua
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E27 'ว' starts at 3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E31 'ั' starts at 6
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E2A 'ส' starts at 9
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">found so sua
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E14 'ด' starts at 12
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">U+0E35 'ี' starts at 15</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
84
public/struct-embedding
generated
84
public/struct-embedding
generated
@ -46,8 +46,7 @@ files and folders into the application binary.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -57,8 +56,7 @@ files and folders into the application binary.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -68,10 +66,9 @@ files and folders into the application binary.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">num</span> <span class="kt">int</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="nx">num</span> <span class="kt">int</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -81,10 +78,9 @@ files and folders into the application binary.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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">"base with num=%v"</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>
|
||||
</pre>
|
||||
<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></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">"base with num=%v"</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="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -96,12 +92,10 @@ like a field without a name.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">container</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">base</span>
|
||||
<span class="nx">str</span> <span class="kt">string</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="nx">base</span>
|
||||
</span></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -111,8 +105,7 @@ like a field without a name.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -125,14 +118,12 @@ embedded type serves as the field name.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">co</span> <span class="o">:=</span> <span class="nx">container</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">num</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="nx">str</span><span class="p">:</span> <span class="s">"some name"</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="p">},</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="nx">str</span><span class="p">:</span> <span class="s">"some name"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -144,9 +135,7 @@ e.g. <code>co.num</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"co={num: %v, str: %v}\n"</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>
|
||||
<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">"co={num: %v, str: %v}\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -158,9 +147,7 @@ the embedded type name.</p>
|
||||
</td>
|
||||
<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">"also num:"</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>
|
||||
<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">"also num:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -174,9 +161,7 @@ directly on <code>co</code>.</p>
|
||||
</td>
|
||||
<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">"describe:"</span><span class="p">,</span> <span class="nx">co</span><span class="p">.</span><span class="nf">describe</span><span class="p">())</span>
|
||||
</pre>
|
||||
<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">"describe:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -186,10 +171,9 @@ directly on <code>co</code>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nf">describe</span><span class="p">()</span> <span class="kt">string</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="nf">describe</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -203,11 +187,9 @@ we see that a <code>container</code> now implements the
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"describer:"</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="p">}</span>
|
||||
</pre>
|
||||
<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></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">"describer:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -221,11 +203,11 @@ we see that a <code>container</code> now implements the
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run struct-embedding.go
|
||||
<span class="go">co={num: 1, str: some name}
|
||||
</span><span class="go">also num: 1
|
||||
</span><span class="go">describe: base with num=1
|
||||
</span><span class="go">describer: base with num=1</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run struct-embedding.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">co={num: 1, str: some name}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">also num: 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">describe: base with num=1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">describer: base with num=1</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
111
public/structs
generated
111
public/structs
generated
@ -44,8 +44,7 @@ records.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,8 +54,7 @@ records.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -67,12 +65,10 @@ records.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">person</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">name</span> <span class="kt">string</span>
|
||||
<span class="nx">age</span> <span class="kt">int</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -83,9 +79,7 @@ records.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,12 +91,10 @@ as a local variable will survive the scope of the function.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="p">.</span><span class="nx">age</span> <span class="p">=</span> <span class="mi">42</span>
|
||||
<span class="k">return</span> <span class="o">&</span><span class="nx">p</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="o">&</span><span class="nx">p</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -112,8 +104,7 @@ as a local variable will survive the scope of the function.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -124,9 +115,7 @@ as a local variable will survive the scope of the function.</p>
|
||||
</td>
|
||||
<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">person</span><span class="p">{</span><span class="s">"Bob"</span><span class="p">,</span> <span class="mi">20</span><span class="p">})</span>
|
||||
</pre>
|
||||
<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">"Bob"</span><span class="p">,</span> <span class="mi">20</span><span class="p">})</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -137,9 +126,7 @@ as a local variable will survive the scope of the function.</p>
|
||||
</td>
|
||||
<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">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">"Alice"</span><span class="p">,</span> <span class="nx">age</span><span class="p">:</span> <span class="mi">30</span><span class="p">})</span>
|
||||
</pre>
|
||||
<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">"Alice"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -150,9 +137,7 @@ as a local variable will survive the scope of the function.</p>
|
||||
</td>
|
||||
<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">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">"Fred"</span><span class="p">})</span>
|
||||
</pre>
|
||||
<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">"Fred"</span><span class="p">})</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -163,9 +148,7 @@ as a local variable will survive the scope of the function.</p>
|
||||
</td>
|
||||
<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="o">&</span><span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">"Ann"</span><span class="p">,</span> <span class="nx">age</span><span class="p">:</span> <span class="mi">40</span><span class="p">})</span>
|
||||
</pre>
|
||||
<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">&</span><span class="nx">person</span><span class="p">{</span><span class="nx">name</span><span class="p">:</span> <span class="s">"Ann"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -176,9 +159,7 @@ as a local variable will survive the scope of the function.</p>
|
||||
</td>
|
||||
<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="nf">newPerson</span><span class="p">(</span><span class="s">"Jon"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"Jon"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -189,10 +170,8 @@ as a local variable will survive the scope of the function.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"Sean"</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">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>
|
||||
<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">"Sean"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -204,10 +183,8 @@ pointers are automatically dereferenced.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">sp</span> <span class="o">:=</span> <span class="o">&</span><span class="nx">s</span>
|
||||
<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>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">sp</span> <span class="o">:=</span> <span class="o">&</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -218,10 +195,8 @@ pointers are automatically dereferenced.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -235,17 +210,15 @@ struct type. This technique is commonly used for
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">dog</span> <span class="o">:=</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">name</span> <span class="kt">string</span>
|
||||
<span class="nx">isGood</span> <span class="kt">bool</span>
|
||||
<span class="p">}{</span>
|
||||
<span class="s">"Rex"</span><span class="p">,</span>
|
||||
<span class="kc">true</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">dog</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <span class="p">}{</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"Rex"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="kc">true</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -259,16 +232,16 @@ struct type. This technique is commonly used for
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run structs.go
|
||||
<span class="go">{Bob 20}
|
||||
</span><span class="go">{Alice 30}
|
||||
</span><span class="go">{Fred 0}
|
||||
</span><span class="go">&{Ann 40}
|
||||
</span><span class="go">&{Jon 42}
|
||||
</span><span class="go">Sean
|
||||
</span><span class="go">50
|
||||
</span><span class="go">51
|
||||
</span><span class="go">{Rex true}</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run structs.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">{Bob 20}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">{Alice 30}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">{Fred 0}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">&{Ann 40}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">&{Jon 42}
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Sean
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">50
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">51
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">{Rex true}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
111
public/switch
generated
111
public/switch
generated
@ -43,8 +43,7 @@ branches.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,11 +53,10 @@ branches.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -68,8 +66,7 @@ branches.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -80,18 +77,16 @@ branches.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">i</span> <span class="o">:=</span> <span class="mi">2</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Print</span><span class="p">(</span><span class="s">"Write "</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="s">" as "</span><span class="p">)</span>
|
||||
<span class="k">switch</span> <span class="nx">i</span> <span class="p">{</span>
|
||||
<span class="k">case</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">"one"</span><span class="p">)</span>
|
||||
<span class="k">case</span> <span class="mi">2</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">"two"</span><span class="p">)</span>
|
||||
<span class="k">case</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">"three"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"Write "</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="s">" as "</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></span><span class="line"><span class="cl"> <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">"one"</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></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">"two"</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></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">"three"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -104,14 +99,12 @@ in the same <code>case</code> statement. We use the optional
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"It's the weekend"</span><span class="p">)</span>
|
||||
<span class="k">default</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">"It's a weekday"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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">"It's the weekend"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <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">"It's a weekday"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -124,15 +117,13 @@ to express if/else logic. Here we also show how the
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">switch</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"><</span> <span class="mi">12</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">"It's before noon"</span><span class="p">)</span>
|
||||
<span class="k">default</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">"It's after noon"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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"><</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">"It's before noon"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <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">"It's after noon"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -146,22 +137,20 @@ type corresponding to its clause.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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">case</span> <span class="kt">bool</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">"I'm a bool"</span><span class="p">)</span>
|
||||
<span class="k">case</span> <span class="kt">int</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">"I'm an int"</span><span class="p">)</span>
|
||||
<span class="k">default</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">"Don't know type %T\n"</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
<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="mi">1</span><span class="p">)</span>
|
||||
<span class="nf">whatAmI</span><span class="p">(</span><span class="s">"hey"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <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">"I'm a bool"</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></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">"I'm an int"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <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">"Don't know type %T\n"</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><span class="line"><span class="cl"> <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></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></span><span class="line"><span class="cl"> <span class="nf">whatAmI</span><span class="p">(</span><span class="s">"hey"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -175,13 +164,13 @@ type corresponding to its clause.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run switch.go
|
||||
<span class="go">Write 2 as two
|
||||
</span><span class="go">It's a weekday
|
||||
</span><span class="go">It's after noon
|
||||
</span><span class="go">I'm a bool
|
||||
</span><span class="go">I'm an int
|
||||
</span><span class="go">Don't know type string</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run switch.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">Write 2 as two
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">It's a weekday
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">It's after noon
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">I'm a bool
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">I'm an int
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Don't know type string</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
75
public/temporary-files-and-directories
generated
75
public/temporary-files-and-directories
generated
@ -46,8 +46,7 @@ time.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -57,12 +56,11 @@ time.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="s">"path/filepath"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"path/filepath"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -72,12 +70,11 @@ time.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -87,8 +84,7 @@ time.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -103,10 +99,8 @@ create the file in the default location for our OS.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">""</span><span class="p">,</span> <span class="s">"sample"</span><span class="p">)</span>
|
||||
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">""</span><span class="p">,</span> <span class="s">"sample"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -122,9 +116,7 @@ calls will always create different file names.</p>
|
||||
</td>
|
||||
<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">"Temp file name:"</span><span class="p">,</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Name</span><span class="p">())</span>
|
||||
</pre>
|
||||
<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">"Temp file name:"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -138,9 +130,7 @@ explicitly.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -151,10 +141,8 @@ explicitly.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -169,11 +157,9 @@ rather than an open file.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">""</span><span class="p">,</span> <span class="s">"sampledir"</span><span class="p">)</span>
|
||||
<span class="nf">check</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">"Temp dir name:"</span><span class="p">,</span> <span class="nx">dname</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">""</span><span class="p">,</span> <span class="s">"sampledir"</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><span class="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">"Temp dir name:"</span><span class="p">,</span> <span class="nx">dname</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -183,8 +169,7 @@ rather than an open file.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -196,12 +181,10 @@ prefixing them with our temporary directory.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"file1"</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 class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"file1"</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></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><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -215,9 +198,9 @@ prefixing them with our temporary directory.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run temporary-files-and-directories.go
|
||||
<span class="go">Temp file name: /tmp/sample610887201
|
||||
</span><span class="go">Temp dir name: /tmp/sampledir898854668</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run temporary-files-and-directories.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">Temp file name: /tmp/sample610887201
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Temp dir name: /tmp/sampledir898854668</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
153
public/testing-and-benchmarking
generated
153
public/testing-and-benchmarking
generated
@ -48,9 +48,7 @@ typically lives in the same package as the code it tests.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma">
|
||||
<span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -60,11 +58,10 @@ typically lives in the same package as the code it tests.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"testing"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"testing"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -79,14 +76,12 @@ be named <code>intutils_test.go</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">if</span> <span class="nx">a</span> <span class="p"><</span> <span class="nx">b</span> <span class="p">{</span>
|
||||
<span class="k">return</span> <span class="nx">a</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">return</span> <span class="nx">b</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">a</span> <span class="p"><</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -98,11 +93,9 @@ beginning with <code>Test</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="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>
|
||||
<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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -115,11 +108,9 @@ failures and stop the test immediately.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">t</span><span class="p">.</span><span class="nf">Errorf</span><span class="p">(</span><span class="s">"IntMin(2, -2) = %d; want -2"</span><span class="p">,</span> <span class="nx">ans</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"IntMin(2, -2) = %d; want -2"</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -133,19 +124,17 @@ walks over them and performs the test logic.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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="nx">a</span><span class="p">,</span> <span class="nx">b</span> <span class="kt">int</span>
|
||||
<span class="nx">want</span> <span class="kt">int</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 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">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">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="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>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="nx">want</span> <span class="kt">int</span>
|
||||
</span></span><span class="line"><span class="cl"> <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></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></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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -158,8 +147,7 @@ when executing <code>go test -v</code>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -169,16 +157,15 @@ when executing <code>go test -v</code>.</p>
|
||||
</td>
|
||||
<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">"%d,%d"</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 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 class="nx">t</span><span class="p">.</span><span class="nf">Errorf</span><span class="p">(</span><span class="s">"got %d, want %d"</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 class="p">})</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"%d,%d"</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">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">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="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="nx">t</span><span class="p">.</span><span class="nf">Errorf</span><span class="p">(</span><span class="s">"got %d, want %d"</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="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">})</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -192,9 +179,7 @@ executes each benchmark function several times, increasing
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -206,12 +191,10 @@ benchmarking in a loop <code>b.N</code> times.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><</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="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="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><</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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -226,24 +209,23 @@ benchmarking in a loop <code>b.N</code> times.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go test -v
|
||||
<span class="go">== RUN TestIntMinBasic
|
||||
</span><span class="go">--- PASS: TestIntMinBasic (0.00s)
|
||||
</span><span class="go">=== RUN TestIntMinTableDriven
|
||||
</span><span class="go">=== RUN TestIntMinTableDriven/0,1
|
||||
</span><span class="go">=== RUN TestIntMinTableDriven/1,0
|
||||
</span><span class="go">=== RUN TestIntMinTableDriven/2,-2
|
||||
</span><span class="go">=== RUN TestIntMinTableDriven/0,-1
|
||||
</span><span class="go">=== RUN TestIntMinTableDriven/-1,0
|
||||
</span><span class="go">--- PASS: TestIntMinTableDriven (0.00s)
|
||||
</span><span class="go"> --- PASS: TestIntMinTableDriven/0,1 (0.00s)
|
||||
</span><span class="go"> --- PASS: TestIntMinTableDriven/1,0 (0.00s)
|
||||
</span><span class="go"> --- PASS: TestIntMinTableDriven/2,-2 (0.00s)
|
||||
</span><span class="go"> --- PASS: TestIntMinTableDriven/0,-1 (0.00s)
|
||||
</span><span class="go"> --- PASS: TestIntMinTableDriven/-1,0 (0.00s)
|
||||
</span><span class="go">PASS
|
||||
</span><span class="go">ok examples/testing-and-benchmarking 0.023s</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go test -v
|
||||
</span></span><span class="line"><span class="cl"><span class="go">== RUN TestIntMinBasic
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">--- PASS: TestIntMinBasic (0.00s)
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">=== RUN TestIntMinTableDriven
|
||||
</span></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><span class="go"> --- PASS: TestIntMinTableDriven/-1,0 (0.00s)
|
||||
</span></span></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -256,14 +238,13 @@ benchmark function names with a regexp.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go test -bench=.
|
||||
<span class="go">goos: darwin
|
||||
</span><span class="go">goarch: arm64
|
||||
</span><span class="go">pkg: examples/testing
|
||||
</span><span class="go">BenchmarkIntMin-8 1000000000 0.3136 ns/op
|
||||
</span><span class="go">PASS
|
||||
</span><span class="go">ok examples/testing-and-benchmarking 0.351s</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go test -bench=.
|
||||
</span></span><span class="line"><span class="cl"><span class="go">goos: darwin
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">goarch: arm64
|
||||
</span></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
126
public/text-templates
generated
126
public/text-templates
generated
@ -45,8 +45,7 @@ features and should be used for generating HTML.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,11 +55,10 @@ features and should be used for generating HTML.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="s">"text/template"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"text/template"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -70,8 +68,7 @@ features and should be used for generating HTML.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -85,13 +82,11 @@ Templates are a mix of static text and “actions” enclosed in
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"t1"</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">"Value is {{.}}\n"</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 class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"t1"</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">"Value is {{.}}\n"</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></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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -104,9 +99,7 @@ useful for templates initialized in the global scope.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"Value: {{.}}\n"</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">"Value: {{.}}\n"</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -119,16 +112,14 @@ replaced by the value passed as a parameter to <code>Execute</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"some text"</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 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="s">"Go"</span><span class="p">,</span>
|
||||
<span class="s">"Rust"</span><span class="p">,</span>
|
||||
<span class="s">"C++"</span><span class="p">,</span>
|
||||
<span class="s">"C#"</span><span class="p">,</span>
|
||||
<span class="p">})</span>
|
||||
</pre>
|
||||
<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">"some text"</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></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></span><span class="line"><span class="cl"> <span class="s">"Go"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"Rust"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"C++"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"C#"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">})</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -139,11 +130,9 @@ replaced by the value passed as a parameter to <code>Execute</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -156,9 +145,7 @@ template is executing.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">t2</span> <span class="o">:=</span> <span class="nf">Create</span><span class="p">(</span><span class="s">"t2"</span><span class="p">,</span> <span class="s">"Name: {{.Name}}\n"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"t2"</span><span class="p">,</span> <span class="s">"Name: {{.Name}}\n"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -168,10 +155,9 @@ template is executing.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">Name</span> <span class="kt">string</span>
|
||||
<span class="p">}{</span><span class="s">"Jane Doe"</span><span class="p">})</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="nx">Name</span> <span class="kt">string</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}{</span><span class="s">"Jane Doe"</span><span class="p">})</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -183,11 +169,9 @@ case of key names.</p>
|
||||
</td>
|
||||
<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">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">"Name"</span><span class="p">:</span> <span class="s">"Mickey Mouse"</span><span class="p">,</span>
|
||||
<span class="p">})</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <span class="s">"Name"</span><span class="p">:</span> <span class="s">"Mickey Mouse"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">})</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -202,12 +186,10 @@ feature of templates: using <code>-</code> in actions to trim whitespace.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">t3</span> <span class="o">:=</span> <span class="nf">Create</span><span class="p">(</span><span class="s">"t3"</span><span class="p">,</span>
|
||||
<span class="s">"{{if . -}} yes {{else -}} no {{end}}\n"</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">"not empty"</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">""</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"t3"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"{{if . -}} yes {{else -}} no {{end}}\n"</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">"not empty"</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">""</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -219,18 +201,16 @@ the range block <code>{{.}}</code> is set to the current item of the iteration.<
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">t4</span> <span class="o">:=</span> <span class="nf">Create</span><span class="p">(</span><span class="s">"t4"</span><span class="p">,</span>
|
||||
<span class="s">"Range: {{range .}}{{.}} {{end}}\n"</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 class="p">[]</span><span class="kt">string</span><span class="p">{</span>
|
||||
<span class="s">"Go"</span><span class="p">,</span>
|
||||
<span class="s">"Rust"</span><span class="p">,</span>
|
||||
<span class="s">"C++"</span><span class="p">,</span>
|
||||
<span class="s">"C#"</span><span class="p">,</span>
|
||||
<span class="p">})</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">"t4"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"Range: {{range .}}{{.}} {{end}}\n"</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></span><span class="line"><span class="cl"> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"Go"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"Rust"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"C++"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"C#"</span><span class="p">,</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">})</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -244,15 +224,15 @@ the range block <code>{{.}}</code> is set to the current item of the iteration.<
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run templates.go
|
||||
<span class="go">Value: some text
|
||||
</span><span class="go">Value: 5
|
||||
</span><span class="go">Value: [Go Rust C++ C#]
|
||||
</span><span class="go">Name: Jane Doe
|
||||
</span><span class="go">Name: Mickey Mouse
|
||||
</span><span class="go">yes
|
||||
</span><span class="go">no
|
||||
</span><span class="go">Range: Go Rust C++ C# </span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run templates.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">Value: some text
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Value: 5
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Value: [Go Rust C++ C#]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Name: Jane Doe
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Name: Mickey Mouse
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">yes
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">no
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Range: Go Rust C++ C# </span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
65
public/tickers
generated
65
public/tickers
generated
@ -46,8 +46,7 @@ periodically until we stop it.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -57,11 +56,10 @@ periodically until we stop it.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -71,8 +69,7 @@ periodically until we stop it.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -86,10 +83,8 @@ values as they arrive every 500ms.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -99,17 +94,16 @@ values as they arrive every 500ms.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="k">for</span> <span class="p">{</span>
|
||||
<span class="k">select</span> <span class="p">{</span>
|
||||
<span class="k">case</span> <span class="o"><-</span><span class="nx">done</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">case</span> <span class="nx">t</span> <span class="o">:=</span> <span class="o"><-</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">"Tick at"</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}()</span>
|
||||
</pre>
|
||||
<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><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o"><-</span><span class="nx">done</span><span class="p">:</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">return</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"><-</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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Tick at"</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><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -122,13 +116,11 @@ channel. We’ll stop ours after 1600ms.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">ticker</span><span class="p">.</span><span class="nf">Stop</span><span class="p">()</span>
|
||||
<span class="nx">done</span> <span class="o"><-</span> <span class="kc">true</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Ticker stopped"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="nx">done</span> <span class="o"><-</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">"Ticker stopped"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -144,12 +136,11 @@ before we stop it.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run tickers.go
|
||||
<span class="go">Tick at 2012-09-23 11:29:56.487625 -0700 PDT
|
||||
</span><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:57.488076 -0700 PDT
|
||||
</span><span class="go">Ticker stopped</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><span class="go">Ticker stopped</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
129
public/time
generated
129
public/time
generated
@ -43,8 +43,7 @@ here are some examples.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,11 +53,10 @@ here are some examples.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -68,9 +66,8 @@ here are some examples.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">p</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span>
|
||||
</pre>
|
||||
<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><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -81,10 +78,8 @@ here are some examples.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nf">p</span><span class="p">(</span><span class="nx">now</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,11 +92,9 @@ with a <code>Location</code>, i.e. time zone.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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="nf">p</span><span class="p">(</span><span class="nx">then</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -113,16 +106,14 @@ value as expected.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">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">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">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">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">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">Location</span><span class="p">())</span>
|
||||
</pre>
|
||||
<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></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></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></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></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></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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -133,9 +124,7 @@ value as expected.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -148,11 +137,9 @@ as the second, respectively.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">Equal</span><span class="p">(</span><span class="nx">now</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -164,10 +151,8 @@ the interval between two times.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nf">p</span><span class="p">(</span><span class="nx">diff</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -179,12 +164,10 @@ various units.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">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">Nanoseconds</span><span class="p">())</span>
|
||||
</pre>
|
||||
<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></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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -197,11 +180,9 @@ duration.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="o">-</span><span class="nx">diff</span><span class="p">))</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -215,28 +196,28 @@ duration.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run time.go
|
||||
<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 class="go">2009
|
||||
</span><span class="go">November
|
||||
</span><span class="go">17
|
||||
</span><span class="go">20
|
||||
</span><span class="go">34
|
||||
</span><span class="go">58
|
||||
</span><span class="go">651387237
|
||||
</span><span class="go">UTC
|
||||
</span><span class="go">Tuesday
|
||||
</span><span class="go">true
|
||||
</span><span class="go">false
|
||||
</span><span class="go">false
|
||||
</span><span class="go">25891h15m15.142266763s
|
||||
</span><span class="go">25891.25420618521
|
||||
</span><span class="go">1.5534752523711128e+06
|
||||
</span><span class="go">9.320851514226677e+07
|
||||
</span><span class="go">93208515142266763
|
||||
</span><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>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run time.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">2012-10-31 15:50:13.793654 +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></span><span class="line"><span class="cl"><span class="go">2009
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">November
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">17
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">20
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">34
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">58
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">651387237
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">UTC
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Tuesday
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">25891h15m15.142266763s
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">25891.25420618521
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1.5534752523711128e+06
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">9.320851514226677e+07
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">93208515142266763
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">2012-10-31 15:50:13.793654 +0000 UTC
|
||||
</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>
|
||||
</tr>
|
||||
|
||||
|
83
public/time-formatting-parsing
generated
83
public/time-formatting-parsing
generated
@ -43,8 +43,7 @@ pattern-based layouts.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,11 +53,10 @@ pattern-based layouts.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -68,9 +66,8 @@ pattern-based layouts.</p>
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">p</span> <span class="o">:=</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span>
|
||||
</pre>
|
||||
<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><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -83,10 +80,8 @@ constant.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,12 +92,10 @@ constant.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">time</span><span class="p">.</span><span class="nx">RFC3339</span><span class="p">,</span>
|
||||
<span class="s">"2012-11-01T22:08:41+00:00"</span><span class="p">)</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="nx">t1</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="s">"2012-11-01T22:08:41+00:00"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -119,14 +112,12 @@ The example time must be exactly as shown: the year 2006,
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"3:04PM"</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">"Mon Jan _2 15:04:05 2006"</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">"2006-01-02T15:04:05.999999-07:00"</span><span class="p">))</span>
|
||||
<span class="nx">form</span> <span class="o">:=</span> <span class="s">"3 04 PM"</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">"8 41 PM"</span><span class="p">)</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="nx">t2</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"3:04PM"</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">"Mon Jan _2 15:04:05 2006"</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">"2006-01-02T15:04:05.999999-07:00"</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">"3 04 PM"</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">"8 41 PM"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -139,11 +130,9 @@ components of the time value.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"%d-%02d-%02dT%02d:%02d:%02d-00:00\n"</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 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>
|
||||
<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">"%d-%02d-%02dT%02d:%02d:%02d-00:00\n"</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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -155,12 +144,10 @@ explaining the parsing problem.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">ansic</span> <span class="o">:=</span> <span class="s">"Mon Jan _2 15:04:05 2006"</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">"8:41PM"</span><span class="p">)</span>
|
||||
<span class="nf">p</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">ansic</span> <span class="o">:=</span> <span class="s">"Mon Jan _2 15:04:05 2006"</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">"8:41PM"</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -174,15 +161,15 @@ explaining the parsing problem.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run time-formatting-parsing.go
|
||||
<span class="go">2014-04-15T18:00:15-07:00
|
||||
</span><span class="go">2012-11-01 22:08:41 +0000 +0000
|
||||
</span><span class="go">6:00PM
|
||||
</span><span class="go">Tue Apr 15 18:00:15 2014
|
||||
</span><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 class="go">2014-04-15T18:00:15-00:00
|
||||
</span><span class="go">parsing time "8:41PM" as "Mon Jan _2 15:04:05 2006": ...</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run time-formatting-parsing.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">2014-04-15T18:00:15-07:00
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">2012-11-01 22:08:41 +0000 +0000
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">6:00PM
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Tue Apr 15 18:00:15 2014
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">2014-04-15T18:00:15.161182-07:00
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">0000-01-01 20:41:00 +0000 UTC
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">2014-04-15T18:00:15-00:00
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">parsing time "8:41PM" as "Mon Jan _2 15:04:05 2006": ...</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
74
public/timeouts
generated
74
public/timeouts
generated
@ -45,8 +45,7 @@ elegant thanks to channels and <code>select</code>.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,11 +55,10 @@ elegant thanks to channels and <code>select</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -70,8 +68,7 @@ elegant thanks to channels and <code>select</code>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -87,13 +84,11 @@ channel is never read.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">go</span> <span class="kd">func</span><span class="p">()</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 class="nx">c1</span> <span class="o"><-</span> <span class="s">"result 1"</span>
|
||||
<span class="p">}()</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="nx">c1</span> <span class="o"><-</span> <span class="s">"result 1"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -109,14 +104,12 @@ if the operation takes more than the allowed 1s.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">select</span> <span class="p">{</span>
|
||||
<span class="k">case</span> <span class="nx">res</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">c1</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 class="k">case</span> <span class="o"><-</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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"timeout 1"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <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"><-</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></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o"><-</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">"timeout 1"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -128,20 +121,18 @@ from <code>c2</code> will succeed and we’ll print the result.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">go</span> <span class="kd">func</span><span class="p">()</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 class="nx">c2</span> <span class="o"><-</span> <span class="s">"result 2"</span>
|
||||
<span class="p">}()</span>
|
||||
<span class="k">select</span> <span class="p">{</span>
|
||||
<span class="k">case</span> <span class="nx">res</span> <span class="o">:=</span> <span class="o"><-</span><span class="nx">c2</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 class="k">case</span> <span class="o"><-</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="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"timeout 2"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="nx">c2</span> <span class="o"><-</span> <span class="s">"result 2"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span>
|
||||
</span></span><span class="line"><span class="cl"> <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"><-</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></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="o"><-</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">"timeout 2"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -157,10 +148,9 @@ out and the second succeeding.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run timeouts.go
|
||||
<span class="go">timeout 1
|
||||
</span><span class="go">result 2</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run timeouts.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">timeout 1
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">result 2</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
58
public/timers
generated
58
public/timers
generated
@ -46,8 +46,7 @@ at <a href="tickers">tickers</a>.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -57,11 +56,10 @@ at <a href="tickers">tickers</a>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -71,8 +69,7 @@ at <a href="tickers">tickers</a>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -86,9 +83,7 @@ time. This timer will wait 2 seconds.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -101,10 +96,8 @@ fired.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="o"><-</span><span class="nx">timer1</span><span class="p">.</span><span class="nx">C</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Timer 1 fired"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="o"><-</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">"Timer 1 fired"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -118,17 +111,15 @@ Here’s an example of that.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
|
||||
<span class="o"><-</span><span class="nx">timer2</span><span class="p">.</span><span class="nx">C</span>
|
||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Timer 2 fired"</span><span class="p">)</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 class="k">if</span> <span class="nx">stop2</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">"Timer 2 stopped"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"> <span class="o"><-</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">"Timer 2 fired"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <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></span><span class="line"><span class="cl"> <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">"Timer 2 stopped"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -140,10 +131,8 @@ was going to, to show it is in fact stopped.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -160,10 +149,9 @@ a chance to fire.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run timers.go
|
||||
<span class="go">Timer 1 fired
|
||||
</span><span class="go">Timer 2 stopped</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run timers.go
|
||||
</span></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
100
public/url-parsing
generated
100
public/url-parsing
generated
@ -43,8 +43,7 @@ Here’s how to parse URLs in Go.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,12 +53,11 @@ Here’s how to parse URLs in Go.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"net"</span>
|
||||
<span class="s">"net/url"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"net"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"net/url"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,8 +67,7 @@ Here’s how to parse URLs in Go.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -83,9 +80,7 @@ query params, and query fragment.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">s</span> <span class="o">:=</span> <span class="s">"postgres://user:pass@host.com:5432/path?k=v#f"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">s</span> <span class="o">:=</span> <span class="s">"postgres://user:pass@host.com:5432/path?k=v#f"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -96,12 +91,10 @@ query params, and query fragment.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -112,9 +105,7 @@ query params, and query fragment.</p>
|
||||
</td>
|
||||
<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">u</span><span class="p">.</span><span class="nx">Scheme</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -127,12 +118,10 @@ values.</p>
|
||||
</td>
|
||||
<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">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 class="nf">Username</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 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>
|
||||
<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></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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -144,12 +133,10 @@ if present. Use <code>SplitHostPort</code> to extract them.</p>
|
||||
</td>
|
||||
<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">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 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">port</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -161,10 +148,8 @@ the <code>#</code>.</p>
|
||||
</td>
|
||||
<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">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">Fragment</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -179,13 +164,11 @@ if you only want the first value.</p>
|
||||
</td>
|
||||
<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">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 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 class="s">"k"</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></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">"k"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -201,20 +184,19 @@ pieces that we extracted.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run url-parsing.go
|
||||
<span class="go">postgres
|
||||
</span><span class="go">user:pass
|
||||
</span><span class="go">user
|
||||
</span><span class="go">pass
|
||||
</span><span class="go">host.com:5432
|
||||
</span><span class="go">host.com
|
||||
</span><span class="go">5432
|
||||
</span><span class="go">/path
|
||||
</span><span class="go">f
|
||||
</span><span class="go">k=v
|
||||
</span><span class="go">map[k:[v]]
|
||||
</span><span class="go">v</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run url-parsing.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">postgres
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">user:pass
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">user
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">pass
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">host.com:5432
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">host.com
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">5432
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">/path
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">f
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">k=v
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">map[k:[v]]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">v</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
43
public/values
generated
43
public/values
generated
@ -44,8 +44,7 @@ basic examples.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,8 +54,7 @@ basic examples.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -66,8 +64,7 @@ basic examples.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -78,9 +75,7 @@ basic examples.</p>
|
||||
</td>
|
||||
<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">"go"</span> <span class="o">+</span> <span class="s">"lang"</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"go"</span> <span class="o">+</span> <span class="s">"lang"</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -91,10 +86,8 @@ basic examples.</p>
|
||||
</td>
|
||||
<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">"1+1 ="</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">"7.0/3.0 ="</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>
|
||||
<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">"1+1 ="</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">"7.0/3.0 ="</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -105,12 +98,10 @@ basic examples.</p>
|
||||
</td>
|
||||
<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="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 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="p">}</span>
|
||||
</pre>
|
||||
<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">&&</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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -124,13 +115,13 @@ basic examples.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run values.go
|
||||
<span class="go">golang
|
||||
</span><span class="go">1+1 = 2
|
||||
</span><span class="go">7.0/3.0 = 2.3333333333333335
|
||||
</span><span class="go">false
|
||||
</span><span class="go">true
|
||||
</span><span class="go">false</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run values.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">golang
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1+1 = 2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">7.0/3.0 = 2.3333333333333335
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">false
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">false</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
53
public/variables
generated
53
public/variables
generated
@ -44,8 +44,7 @@ calls.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -55,8 +54,7 @@ calls.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -66,8 +64,7 @@ calls.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -78,10 +75,8 @@ calls.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">var</span> <span class="nx">a</span> <span class="p">=</span> <span class="s">"initial"</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>
|
||||
</pre>
|
||||
<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">"initial"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -92,10 +87,8 @@ calls.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -106,10 +99,8 @@ calls.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">var</span> <span class="nx">d</span> <span class="p">=</span> <span class="kc">true</span>
|
||||
<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>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -122,10 +113,8 @@ zero value for an <code>int</code> is <code>0</code>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">var</span> <span class="nx">e</span> <span class="kt">int</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>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -139,11 +128,9 @@ This syntax is only available inside functions.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">f</span> <span class="o">:=</span> <span class="s">"apple"</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 class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">f</span> <span class="o">:=</span> <span class="s">"apple"</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><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -157,12 +144,12 @@ This syntax is only available inside functions.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run variables.go
|
||||
<span class="go">initial
|
||||
</span><span class="go">1 2
|
||||
</span><span class="go">true
|
||||
</span><span class="go">0
|
||||
</span><span class="go">apple</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run variables.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">initial
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">1 2
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">true
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">0
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">apple</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
51
public/variadic-functions
generated
51
public/variadic-functions
generated
@ -45,8 +45,7 @@ function.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -56,8 +55,7 @@ function.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="s">"fmt"</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,11 +67,9 @@ of <code>int</code>s as arguments.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="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">" "</span><span class="p">)</span>
|
||||
<span class="nx">total</span> <span class="o">:=</span> <span class="mi">0</span>
|
||||
</pre>
|
||||
<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></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">" "</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -86,13 +82,11 @@ iterate over it with <code>range</code>, etc.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">total</span> <span class="o">+=</span> <span class="nx">num</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 class="p">}</span>
|
||||
</pre>
|
||||
<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></span><span class="line"><span class="cl"> <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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -102,8 +96,7 @@ iterate over it with <code>range</code>, etc.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -115,10 +108,8 @@ with individual arguments.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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 class="mi">3</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -131,11 +122,9 @@ apply them to a variadic function using
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nf">sum</span><span class="p">(</span><span class="nx">nums</span><span class="o">...</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -149,10 +138,10 @@ apply them to a variadic function using
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run variadic-functions.go
|
||||
<span class="go">[1 2] 3
|
||||
</span><span class="go">[1 2 3] 6
|
||||
</span><span class="go">[1 2 3 4] 10</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run variadic-functions.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">[1 2] 3
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">[1 2 3] 6
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">[1 2 3 4] 10</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
87
public/waitgroups
generated
87
public/waitgroups
generated
@ -43,8 +43,7 @@ use a <em>wait group</em>.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,12 +53,11 @@ use a <em>wait group</em>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"sync"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"sync"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -70,10 +68,8 @@ use a <em>wait group</em>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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="nx">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"Worker %d starting\n"</span><span class="p">,</span> <span class="nx">id</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"Worker %d starting\n"</span><span class="p">,</span> <span class="nx">id</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,11 +80,9 @@ use a <em>wait group</em>.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">fmt</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">"Worker %d done\n"</span><span class="p">,</span> <span class="nx">id</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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><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">"Worker %d done\n"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -98,8 +92,7 @@ use a <em>wait group</em>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -112,9 +105,7 @@ explicitly passed into functions, it should be done <em>by pointer</em>.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -126,10 +117,8 @@ counter for each.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><=</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="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>
|
||||
<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"><=</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -142,9 +131,7 @@ for more details.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">i</span> <span class="o">:=</span> <span class="nx">i</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -158,13 +145,11 @@ involved in its execution.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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="nf">worker</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span>
|
||||
<span class="p">}()</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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><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></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></span><span class="line"><span class="cl"> <span class="p">}()</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -176,9 +161,7 @@ all the workers notified they’re done.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">wg</span><span class="p">.</span><span class="nf">Wait</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -192,9 +175,7 @@ advanced use cases, consider using the
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -208,17 +189,17 @@ advanced use cases, consider using the
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run waitgroups.go
|
||||
<span class="go">Worker 5 starting
|
||||
</span><span class="go">Worker 3 starting
|
||||
</span><span class="go">Worker 4 starting
|
||||
</span><span class="go">Worker 1 starting
|
||||
</span><span class="go">Worker 2 starting
|
||||
</span><span class="go">Worker 4 done
|
||||
</span><span class="go">Worker 1 done
|
||||
</span><span class="go">Worker 2 done
|
||||
</span><span class="go">Worker 5 done
|
||||
</span><span class="go">Worker 3 done</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run waitgroups.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">Worker 5 starting
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Worker 3 starting
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Worker 4 starting
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Worker 1 starting
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Worker 2 starting
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Worker 4 done
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Worker 1 done
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Worker 2 done
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Worker 5 done
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Worker 3 done</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
94
public/worker-pools
generated
94
public/worker-pools
generated
@ -43,8 +43,7 @@ a <em>worker pool</em> using goroutines and channels.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,11 +53,10 @@ a <em>worker pool</em> using goroutines and channels.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"time"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"time"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -73,16 +71,14 @@ simulate an expensive task.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><-</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"><-</span> <span class="kt">int</span><span class="p">)</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"worker"</span><span class="p">,</span> <span class="nx">id</span><span class="p">,</span> <span class="s">"started job"</span><span class="p">,</span> <span class="nx">j</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 class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"worker"</span><span class="p">,</span> <span class="nx">id</span><span class="p">,</span> <span class="s">"finished job"</span><span class="p">,</span> <span class="nx">j</span><span class="p">)</span>
|
||||
<span class="nx">results</span> <span class="o"><-</span> <span class="nx">j</span> <span class="o">*</span> <span class="mi">2</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><-</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"><-</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></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">"worker"</span><span class="p">,</span> <span class="nx">id</span><span class="p">,</span> <span class="s">"started job"</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></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">"worker"</span><span class="p">,</span> <span class="nx">id</span><span class="p">,</span> <span class="s">"finished job"</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"><-</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -92,8 +88,7 @@ simulate an expensive task.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -106,11 +101,9 @@ channels for this.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">const</span> <span class="nx">numJobs</span> <span class="p">=</span> <span class="mi">5</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 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>
|
||||
<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></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></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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -122,11 +115,9 @@ because there are no jobs yet.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><=</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">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="p">}</span>
|
||||
</pre>
|
||||
<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"><=</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></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -138,12 +129,10 @@ channel to indicate that’s all the work we have.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><=</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="nx">jobs</span> <span class="o"><-</span> <span class="nx">j</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nb">close</span><span class="p">(</span><span class="nx">jobs</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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"><=</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"><-</span> <span class="nx">j</span>
|
||||
</span></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -157,12 +146,10 @@ goroutines is to use a <a href="waitgroups">WaitGroup</a>.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma">
|
||||
<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"><=</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="o"><-</span><span class="nx">results</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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"><=</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"><-</span><span class="nx">results</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -180,18 +167,17 @@ there are 3 workers operating concurrently.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> time go run worker-pools.go
|
||||
<span class="go">worker 1 started job 1
|
||||
</span><span class="go">worker 2 started job 2
|
||||
</span><span class="go">worker 3 started job 3
|
||||
</span><span class="go">worker 1 finished job 1
|
||||
</span><span class="go">worker 1 started job 4
|
||||
</span><span class="go">worker 2 finished job 2
|
||||
</span><span class="go">worker 2 started job 5
|
||||
</span><span class="go">worker 3 finished job 3
|
||||
</span><span class="go">worker 1 finished job 4
|
||||
</span><span class="go">worker 2 finished job 5</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><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></span></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><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></span><span class="line"><span class="cl"><span class="go">worker 2 finished job 5</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -201,7 +187,7 @@ there are 3 workers operating concurrently.</p>
|
||||
</td>
|
||||
<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>
|
||||
</tr>
|
||||
|
||||
|
109
public/writing-files
generated
109
public/writing-files
generated
@ -43,8 +43,7 @@ ones we saw earlier for reading.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,12 +53,11 @@ ones we saw earlier for reading.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"bufio"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="s">"os"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"bufio"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"os"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -69,12 +67,11 @@ ones we saw earlier for reading.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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 class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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></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></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -84,8 +81,7 @@ ones we saw earlier for reading.</p>
|
||||
</td>
|
||||
<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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -97,11 +93,9 @@ bytes) into a file.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"hello\ngo\n"</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">"/tmp/dat1"</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="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"hello\ngo\n"</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">"/tmp/dat1"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -112,10 +106,8 @@ bytes) into a file.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"/tmp/dat2"</span><span class="p">)</span>
|
||||
<span class="nf">check</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"/tmp/dat2"</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -127,9 +119,7 @@ after opening a file.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="k">defer</span> <span class="nx">f</span><span class="p">.</span><span class="nf">Close</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -140,12 +130,10 @@ after opening a file.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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="nf">check</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">Printf</span><span class="p">(</span><span class="s">"wrote %d bytes\n"</span><span class="p">,</span> <span class="nx">n2</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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></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><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">"wrote %d bytes\n"</span><span class="p">,</span> <span class="nx">n2</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -156,11 +144,9 @@ after opening a file.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">"writes\n"</span><span class="p">)</span>
|
||||
<span class="nf">check</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">Printf</span><span class="p">(</span><span class="s">"wrote %d bytes\n"</span><span class="p">,</span> <span class="nx">n3</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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">"writes\n"</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><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">"wrote %d bytes\n"</span><span class="p">,</span> <span class="nx">n3</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -171,9 +157,7 @@ after opening a file.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">f</span><span class="p">.</span><span class="nf">Sync</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -185,12 +169,10 @@ to the buffered readers we saw earlier.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">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">"buffered\n"</span><span class="p">)</span>
|
||||
<span class="nf">check</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">Printf</span><span class="p">(</span><span class="s">"wrote %d bytes\n"</span><span class="p">,</span> <span class="nx">n4</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">"buffered\n"</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><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">"wrote %d bytes\n"</span><span class="p">,</span> <span class="nx">n4</span><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -202,9 +184,7 @@ been applied to the underlying writer.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="nx">w</span><span class="p">.</span><span class="nf">Flush</span><span class="p">()</span>
|
||||
</pre>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -214,8 +194,7 @@ been applied to the underlying writer.</p>
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -230,11 +209,10 @@ been applied to the underlying writer.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> go run writing-files.go
|
||||
<span class="go">wrote 5 bytes
|
||||
</span><span class="go">wrote 7 bytes
|
||||
</span><span class="go">wrote 9 bytes</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run writing-files.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go">wrote 5 bytes
|
||||
</span></span></span><span class="line"><span class="cl"><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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -245,14 +223,13 @@ been applied to the underlying writer.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="gp">$</span> cat /tmp/dat1
|
||||
<span class="go">hello
|
||||
</span><span class="go">go
|
||||
</span><span class="go"></span><span class="gp">$</span> cat /tmp/dat2
|
||||
<span class="go">some
|
||||
</span><span class="go">writes
|
||||
</span><span class="go">buffered</span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> cat /tmp/dat1
|
||||
</span></span><span class="line"><span class="cl"><span class="go">hello
|
||||
</span></span></span><span class="line"><span class="cl"><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><span class="line"><span class="cl"><span class="go">some
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">writes
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">buffered</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
149
public/xml
generated
149
public/xml
generated
@ -43,8 +43,7 @@ formats with the <code>encoding.xml</code> package.</p>
|
||||
</td>
|
||||
<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" />
|
||||
<pre class="chroma"><span class="kn">package</span> <span class="nx">main</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -54,11 +53,10 @@ formats with the <code>encoding.xml</code> package.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="s">"encoding/xml"</span>
|
||||
<span class="s">"fmt"</span>
|
||||
<span class="p">)</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"encoding/xml"</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -75,14 +73,12 @@ the name of the XML element representing this struct;
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">Plant</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">XMLName</span> <span class="nx">xml</span><span class="p">.</span><span class="nx">Name</span> <span class="s">`xml:"plant"`</span>
|
||||
<span class="nx">Id</span> <span class="kt">int</span> <span class="s">`xml:"id,attr"`</span>
|
||||
<span class="nx">Name</span> <span class="kt">string</span> <span class="s">`xml:"name"`</span>
|
||||
<span class="nx">Origin</span> <span class="p">[]</span><span class="kt">string</span> <span class="s">`xml:"origin"`</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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:"plant"`</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="nx">Id</span> <span class="kt">int</span> <span class="s">`xml:"id,attr"`</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="nx">Name</span> <span class="kt">string</span> <span class="s">`xml:"name"`</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:"origin"`</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -92,11 +88,10 @@ the name of the XML element representing this struct;
|
||||
</td>
|
||||
<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>
|
||||
<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">"Plant id=%v, name=%v, origin=%v"</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 class="p">}</span>
|
||||
</pre>
|
||||
<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></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">"Plant id=%v, name=%v, origin=%v"</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></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -106,10 +101,9 @@ the name of the XML element representing this struct;
|
||||
</td>
|
||||
<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>
|
||||
<span class="nx">coffee</span> <span class="o">:=</span> <span class="o">&</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">"Coffee"</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">"Ethiopia"</span><span class="p">,</span> <span class="s">"Brazil"</span><span class="p">}</span>
|
||||
</pre>
|
||||
<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><span class="line"><span class="cl"> <span class="nx">coffee</span> <span class="o">:=</span> <span class="o">&</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">"Coffee"</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">"Ethiopia"</span><span class="p">,</span> <span class="s">"Brazil"</span><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -122,10 +116,8 @@ human-readable output.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<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">" "</span><span class="p">,</span> <span class="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="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span>
|
||||
</pre>
|
||||
<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">" "</span><span class="p">,</span> <span class="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="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -137,9 +129,7 @@ it explicitly.</p>
|
||||
</td>
|
||||
<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">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>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -153,13 +143,11 @@ will be returned.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">var</span> <span class="nx">p</span> <span class="nx">Plant</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">&</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="nb">panic</span><span class="p">(</span><span class="nx">err</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">p</span><span class="p">)</span>
|
||||
</pre>
|
||||
<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></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">&</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></span><span class="line"><span class="cl"> <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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -169,9 +157,8 @@ will be returned.</p>
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"> <span class="nx">tomato</span> <span class="o">:=</span> <span class="o">&</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">"Tomato"</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">"Mexico"</span><span class="p">,</span> <span class="s">"California"</span><span class="p">}</span>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">tomato</span> <span class="o">:=</span> <span class="o">&</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">"Tomato"</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">"Mexico"</span><span class="p">,</span> <span class="s">"California"</span><span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -183,12 +170,10 @@ to nest all <code>plant</code>s under <code><parent><child>...</code
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma">
|
||||
<span class="kd">type</span> <span class="nx">Nesting</span> <span class="kd">struct</span> <span class="p">{</span>
|
||||
<span class="nx">XMLName</span> <span class="nx">xml</span><span class="p">.</span><span class="nx">Name</span> <span class="s">`xml:"nesting"`</span>
|
||||
<span class="nx">Plants</span> <span class="p">[]</span><span class="o">*</span><span class="nx">Plant</span> <span class="s">`xml:"parent>child>plant"`</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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></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:"nesting"`</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:"parent>child>plant"`</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -198,9 +183,8 @@ to nest all <code>plant</code>s under <code><parent><child>...</code
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"> <span class="nx">nesting</span> <span class="o">:=</span> <span class="o">&</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>
|
||||
</pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">nesting</span> <span class="o">:=</span> <span class="o">&</span><span class="nx">Nesting</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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -210,10 +194,9 @@ to nest all <code>plant</code>s under <code><parent><child>...</code
|
||||
</td>
|
||||
<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">" "</span><span class="p">,</span> <span class="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="nb">string</span><span class="p">(</span><span class="nx">out</span><span class="p">))</span>
|
||||
<span class="p">}</span>
|
||||
</pre>
|
||||
<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">" "</span><span class="p">,</span> <span class="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="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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -227,35 +210,35 @@ to nest all <code>plant</code>s under <code><parent><child>...</code
|
||||
</td>
|
||||
<td class="code">
|
||||
|
||||
<pre class="chroma"><span class="gp">$</span> go run xml.go
|
||||
<span class="go"> <plant id="27">
|
||||
</span><span class="go"> <name>Coffee</name>
|
||||
</span><span class="go"> <origin>Ethiopia</origin>
|
||||
</span><span class="go"> <origin>Brazil</origin>
|
||||
</span><span class="go"> </plant>
|
||||
</span><span class="go"><?xml version="1.0" encoding="UTF-8"?>
|
||||
</span><span class="go"> <plant id="27">
|
||||
</span><span class="go"> <name>Coffee</name>
|
||||
</span><span class="go"> <origin>Ethiopia</origin>
|
||||
</span><span class="go"> <origin>Brazil</origin>
|
||||
</span><span class="go"> </plant>
|
||||
</span><span class="go">Plant id=27, name=Coffee, origin=[Ethiopia Brazil]
|
||||
</span><span class="go"> <nesting>
|
||||
</span><span class="go"> <parent>
|
||||
</span><span class="go"> <child>
|
||||
</span><span class="go"> <plant id="27">
|
||||
</span><span class="go"> <name>Coffee</name>
|
||||
</span><span class="go"> <origin>Ethiopia</origin>
|
||||
</span><span class="go"> <origin>Brazil</origin>
|
||||
</span><span class="go"> </plant>
|
||||
</span><span class="go"> <plant id="81">
|
||||
</span><span class="go"> <name>Tomato</name>
|
||||
</span><span class="go"> <origin>Mexico</origin>
|
||||
</span><span class="go"> <origin>California</origin>
|
||||
</span><span class="go"> </plant>
|
||||
</span><span class="go"> </child>
|
||||
</span><span class="go"> </parent>
|
||||
</span><span class="go"> </nesting></span></pre>
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="gp">$</span> go run xml.go
|
||||
</span></span><span class="line"><span class="cl"><span class="go"> <plant id="27">
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <name>Coffee</name>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <origin>Ethiopia</origin>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <origin>Brazil</origin>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> </plant>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"><?xml version="1.0" encoding="UTF-8"?>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <plant id="27">
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <name>Coffee</name>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <origin>Ethiopia</origin>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <origin>Brazil</origin>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> </plant>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go">Plant id=27, name=Coffee, origin=[Ethiopia Brazil]
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <nesting>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <parent>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <child>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <plant id="27">
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <name>Coffee</name>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <origin>Ethiopia</origin>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <origin>Brazil</origin>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> </plant>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <plant id="81">
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <name>Tomato</name>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <origin>Mexico</origin>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> <origin>California</origin>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> </plant>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> </child>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> </parent>
|
||||
</span></span></span><span class="line"><span class="cl"><span class="go"> </nesting></span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
@ -12,10 +12,10 @@ import (
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"github.com/alecthomas/chroma"
|
||||
"github.com/alecthomas/chroma/formatters/html"
|
||||
"github.com/alecthomas/chroma/lexers"
|
||||
"github.com/alecthomas/chroma/styles"
|
||||
"github.com/alecthomas/chroma/v2"
|
||||
"github.com/alecthomas/chroma/v2/formatters/html"
|
||||
"github.com/alecthomas/chroma/v2/lexers"
|
||||
"github.com/alecthomas/chroma/v2/styles"
|
||||
|
||||
"github.com/russross/blackfriday/v2"
|
||||
)
|
||||
@ -222,6 +222,12 @@ func parseAndRenderSegs(sourcePath string) ([]*Seg, string) {
|
||||
seg.DocsRendered = markdown(seg.Docs)
|
||||
}
|
||||
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)
|
||||
|
||||
// adding the content to the js code for copying to the clipboard
|
||||
@ -353,30 +359,32 @@ var SimpleShellOutputLexer = chroma.MustNewLexer(
|
||||
Filenames: []string{"*.sh"},
|
||||
MimeTypes: []string{},
|
||||
},
|
||||
chroma.Rules{
|
||||
"root": {
|
||||
// $ or > triggers the start of prompt formatting
|
||||
{`^\$`, chroma.GenericPrompt, chroma.Push("prompt")},
|
||||
{`^>`, chroma.GenericPrompt, chroma.Push("prompt")},
|
||||
func() chroma.Rules {
|
||||
return chroma.Rules{
|
||||
"root": {
|
||||
// $ or > triggers the start of prompt formatting
|
||||
{`^\$`, chroma.GenericPrompt, chroma.Push("prompt")},
|
||||
{`^>`, chroma.GenericPrompt, chroma.Push("prompt")},
|
||||
|
||||
// empty lines are just text
|
||||
{`^$\n`, chroma.Text, nil},
|
||||
// empty lines are just text
|
||||
{`^$\n`, chroma.Text, nil},
|
||||
|
||||
// otherwise its all output
|
||||
{`[^\n]+$\n?`, chroma.GenericOutput, nil},
|
||||
},
|
||||
"prompt": {
|
||||
// when we find newline, do output formatting rules
|
||||
{`\n`, chroma.Text, chroma.Push("output")},
|
||||
// otherwise its all text
|
||||
{`[^\n]+$`, chroma.Text, nil},
|
||||
},
|
||||
"output": {
|
||||
// sometimes there isn't output so we go right back to prompt
|
||||
{`^\$`, chroma.GenericPrompt, chroma.Pop(1)},
|
||||
{`^>`, chroma.GenericPrompt, chroma.Pop(1)},
|
||||
// otherwise its all output
|
||||
{`[^\n]+$\n?`, chroma.GenericOutput, nil},
|
||||
},
|
||||
// otherwise its all output
|
||||
{`[^\n]+$\n?`, chroma.GenericOutput, nil},
|
||||
},
|
||||
"prompt": {
|
||||
// when we find newline, do output formatting rules
|
||||
{`\n`, chroma.Text, chroma.Push("output")},
|
||||
// otherwise its all text
|
||||
{`[^\n]+$`, chroma.Text, nil},
|
||||
},
|
||||
"output": {
|
||||
// sometimes there isn't output so we go right back to prompt
|
||||
{`^\$`, chroma.GenericPrompt, chroma.Pop(1)},
|
||||
{`^>`, chroma.GenericPrompt, chroma.Pop(1)},
|
||||
// otherwise its all output
|
||||
{`[^\n]+$\n?`, chroma.GenericOutput, nil},
|
||||
},
|
||||
}
|
||||
},
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user