Add examples of maps/slices packages

This commit is contained in:
Eli Bendersky 2023-08-22 05:52:14 -07:00
parent 2166e61181
commit 146bd9cce2
8 changed files with 75 additions and 15 deletions

View File

@ -3,7 +3,10 @@
package main
import "fmt"
import (
"fmt"
"maps"
)
func main() {
@ -58,4 +61,11 @@ func main() {
// the same line with this syntax.
n := map[string]int{"foo": 1, "bar": 2}
fmt.Println("map:", n)
// The `maps` package contains a number of useful
// utility functions for maps.
n2 := map[string]int{"foo": 1, "bar": 2}
if maps.Equal(n, n2) {
fmt.Println("n == n2")
}
}

View File

@ -1,2 +1,2 @@
b976324013ef31370d1605d1834c5dd6f0db0ea1
6gcPOX9Mm1R
c8435b8cc754213b70c58c9a51dfa824c6f70dd7
5jpkxJ2T0Lv

View File

@ -9,3 +9,4 @@ map: map[k1:7]
map: map[]
prs: false
map: map[bar:2 foo:1]
n == n2

View File

@ -3,7 +3,10 @@
package main
import "fmt"
import (
"fmt"
"slices"
)
func main() {
@ -70,6 +73,13 @@ func main() {
t := []string{"g", "h", "i"}
fmt.Println("dcl:", t)
// The `slices` package contains a number of useful
// utility functions for slices.
t2 := []string{"g", "h", "i"}
if slices.Equal(t, t2) {
fmt.Println("t == t2")
}
// Slices can be composed into multi-dimensional data
// structures. The length of the inner slices can
// vary, unlike with multi-dimensional arrays.

View File

@ -1,2 +1,2 @@
9f1302a9c3cf79e5144c4818ea09465ff8d6da57
553_cYPVlPH
522c14373ae9581dd3001be32530cdf940637646
kiy1StxorBF

View File

@ -12,6 +12,7 @@ sl1: [c d e]
sl2: [a b c d e]
sl3: [c d e f]
dcl: [g h i]
t == t2
2d: [[0] [1 2] [2 3 4]]
# Check out this [great blog post](https://go.dev/blog/slices-intro)

31
public/maps generated
View File

@ -42,7 +42,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" />
<a href="https://go.dev/play/p/5jpkxJ2T0Lv"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<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,7 +53,10 @@
</td>
<td class="code leading">
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
<pre 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">&#34;fmt&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;maps&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</td>
</tr>
@ -192,10 +195,25 @@ itself, so we ignored it with the <em>blank identifier</em>
the same line with this syntax.</p>
</td>
<td class="code">
<td class="code leading">
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">n</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;foo&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&#34;bar&#34;</span><span class="p">:</span> <span class="mi">2</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">n</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;map:&#34;</span><span class="p">,</span> <span class="nx">n</span><span class="p">)</span></span></span></code></pre>
</td>
</tr>
<tr>
<td class="docs">
<p>The <code>maps</code> package contains a number of useful
utility functions for maps.</p>
</td>
<td class="code">
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">n2</span> <span class="o">:=</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="s">&#34;foo&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&#34;bar&#34;</span><span class="p">:</span> <span class="mi">2</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">maps</span><span class="p">.</span><span class="nf">Equal</span><span class="p">(</span><span class="nx">n</span><span class="p">,</span> <span class="nx">n2</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">&#34;n == n2&#34;</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>
@ -220,7 +238,8 @@ printed with <code>fmt.Println</code>.</p>
</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>
</span></span></span><span class="line"><span class="cl"><span class="go">map: map[bar:2 foo:1]
</span></span></span><span class="line"><span class="cl"><span class="go">n == n2</span></span></span></code></pre>
</td>
</tr>
@ -239,7 +258,7 @@ printed with <code>fmt.Println</code>.</p>
</div>
<script>
var codeLines = [];
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import \"fmt\"\u000A');codeLines.push('func main() {\u000A');codeLines.push(' m :\u003D make(map[string]int)\u000A');codeLines.push(' m[\"k1\"] \u003D 7\u000A m[\"k2\"] \u003D 13\u000A');codeLines.push(' fmt.Println(\"map:\", m)\u000A');codeLines.push(' v1 :\u003D m[\"k1\"]\u000A fmt.Println(\"v1:\", v1)\u000A');codeLines.push(' v3 :\u003D m[\"k3\"]\u000A fmt.Println(\"v3:\", v3)\u000A');codeLines.push(' fmt.Println(\"len:\", len(m))\u000A');codeLines.push(' delete(m, \"k2\")\u000A fmt.Println(\"map:\", m)\u000A');codeLines.push(' clear(m)\u000A fmt.Println(\"map:\", m)\u000A');codeLines.push(' _, prs :\u003D m[\"k2\"]\u000A fmt.Println(\"prs:\", prs)\u000A');codeLines.push(' n :\u003D map[string]int{\"foo\": 1, \"bar\": 2}\u000A fmt.Println(\"map:\", n)\u000A}\u000A');codeLines.push('');
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import (\u000A \"fmt\"\u000A \"maps\"\u000A)\u000A');codeLines.push('func main() {\u000A');codeLines.push(' m :\u003D make(map[string]int)\u000A');codeLines.push(' m[\"k1\"] \u003D 7\u000A m[\"k2\"] \u003D 13\u000A');codeLines.push(' fmt.Println(\"map:\", m)\u000A');codeLines.push(' v1 :\u003D m[\"k1\"]\u000A fmt.Println(\"v1:\", v1)\u000A');codeLines.push(' v3 :\u003D m[\"k3\"]\u000A fmt.Println(\"v3:\", v3)\u000A');codeLines.push(' fmt.Println(\"len:\", len(m))\u000A');codeLines.push(' delete(m, \"k2\")\u000A fmt.Println(\"map:\", m)\u000A');codeLines.push(' clear(m)\u000A fmt.Println(\"map:\", m)\u000A');codeLines.push(' _, prs :\u003D m[\"k2\"]\u000A fmt.Println(\"prs:\", prs)\u000A');codeLines.push(' n :\u003D map[string]int{\"foo\": 1, \"bar\": 2}\u000A fmt.Println(\"map:\", n)\u000A');codeLines.push(' n2 :\u003D map[string]int{\"foo\": 1, \"bar\": 2}\u000A if maps.Equal(n, n2) {\u000A fmt.Println(\"n \u003D\u003D n2\")\u000A }\u000A}\u000A');codeLines.push('');
</script>
<script src="site.js" async></script>
</body>

25
public/slices generated
View File

@ -42,7 +42,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" />
<a href="https://go.dev/play/p/kiy1StxorBF"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
<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,7 +53,10 @@ a more powerful interface to sequences than arrays.</p>
</td>
<td class="code leading">
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">&#34;fmt&#34;</span></span></span></code></pre>
<pre 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">&#34;fmt&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;slices&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span></span></span></code></pre>
</td>
</tr>
@ -210,6 +213,21 @@ in a single line as well.</p>
</td>
</tr>
<tr>
<td class="docs">
<p>The <code>slices</code> package contains a number of useful
utility functions for slices.</p>
</td>
<td class="code leading">
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="nx">t2</span> <span class="o">:=</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="s">&#34;g&#34;</span><span class="p">,</span> <span class="s">&#34;h&#34;</span><span class="p">,</span> <span class="s">&#34;i&#34;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">slices</span><span class="p">.</span><span class="nf">Equal</span><span class="p">(</span><span class="nx">t</span><span class="p">,</span> <span class="nx">t2</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">&#34;t == t2&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span></span></span></code></pre>
</td>
</tr>
<tr>
<td class="docs">
<p>Slices can be composed into multi-dimensional data
@ -256,6 +274,7 @@ they are rendered similarly by <code>fmt.Println</code>.</p>
</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">t == t2
</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>
@ -300,7 +319,7 @@ Go&rsquo;s other key builtin data structure: maps.</p>
</div>
<script>
var codeLines = [];
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import \"fmt\"\u000A');codeLines.push('func main() {\u000A');codeLines.push(' var s []string\u000A fmt.Println(\"uninit:\", s, s \u003D\u003D nil, len(s) \u003D\u003D 0)\u000A');codeLines.push(' s \u003D make([]string, 3)\u000A fmt.Println(\"emp:\", s, \"len:\", len(s), \"cap:\", cap(s))\u000A');codeLines.push(' s[0] \u003D \"a\"\u000A s[1] \u003D \"b\"\u000A s[2] \u003D \"c\"\u000A fmt.Println(\"set:\", s)\u000A fmt.Println(\"get:\", s[2])\u000A');codeLines.push(' fmt.Println(\"len:\", len(s))\u000A');codeLines.push(' s \u003D append(s, \"d\")\u000A s \u003D append(s, \"e\", \"f\")\u000A fmt.Println(\"apd:\", s)\u000A');codeLines.push(' c :\u003D make([]string, len(s))\u000A copy(c, s)\u000A fmt.Println(\"cpy:\", c)\u000A');codeLines.push(' l :\u003D s[2:5]\u000A fmt.Println(\"sl1:\", l)\u000A');codeLines.push(' l \u003D s[:5]\u000A fmt.Println(\"sl2:\", l)\u000A');codeLines.push(' l \u003D s[2:]\u000A fmt.Println(\"sl3:\", l)\u000A');codeLines.push(' t :\u003D []string{\"g\", \"h\", \"i\"}\u000A fmt.Println(\"dcl:\", t)\u000A');codeLines.push(' twoD :\u003D make([][]int, 3)\u000A for i :\u003D 0; i \u003C 3; i++ {\u000A innerLen :\u003D i + 1\u000A twoD[i] \u003D make([]int, innerLen)\u000A for j :\u003D 0; j \u003C innerLen; j++ {\u000A twoD[i][j] \u003D i + j\u000A }\u000A }\u000A fmt.Println(\"2d: \", twoD)\u000A}\u000A');codeLines.push('');codeLines.push('');codeLines.push('');
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import (\u000A \"fmt\"\u000A \"slices\"\u000A)\u000A');codeLines.push('func main() {\u000A');codeLines.push(' var s []string\u000A fmt.Println(\"uninit:\", s, s \u003D\u003D nil, len(s) \u003D\u003D 0)\u000A');codeLines.push(' s \u003D make([]string, 3)\u000A fmt.Println(\"emp:\", s, \"len:\", len(s), \"cap:\", cap(s))\u000A');codeLines.push(' s[0] \u003D \"a\"\u000A s[1] \u003D \"b\"\u000A s[2] \u003D \"c\"\u000A fmt.Println(\"set:\", s)\u000A fmt.Println(\"get:\", s[2])\u000A');codeLines.push(' fmt.Println(\"len:\", len(s))\u000A');codeLines.push(' s \u003D append(s, \"d\")\u000A s \u003D append(s, \"e\", \"f\")\u000A fmt.Println(\"apd:\", s)\u000A');codeLines.push(' c :\u003D make([]string, len(s))\u000A copy(c, s)\u000A fmt.Println(\"cpy:\", c)\u000A');codeLines.push(' l :\u003D s[2:5]\u000A fmt.Println(\"sl1:\", l)\u000A');codeLines.push(' l \u003D s[:5]\u000A fmt.Println(\"sl2:\", l)\u000A');codeLines.push(' l \u003D s[2:]\u000A fmt.Println(\"sl3:\", l)\u000A');codeLines.push(' t :\u003D []string{\"g\", \"h\", \"i\"}\u000A fmt.Println(\"dcl:\", t)\u000A');codeLines.push(' t2 :\u003D []string{\"g\", \"h\", \"i\"}\u000A if slices.Equal(t, t2) {\u000A fmt.Println(\"t \u003D\u003D t2\")\u000A }\u000A');codeLines.push(' twoD :\u003D make([][]int, 3)\u000A for i :\u003D 0; i \u003C 3; i++ {\u000A innerLen :\u003D i + 1\u000A twoD[i] \u003D make([]int, innerLen)\u000A for j :\u003D 0; j \u003C innerLen; j++ {\u000A twoD[i][j] \u003D i + j\u000A }\u000A }\u000A fmt.Println(\"2d: \", twoD)\u000A}\u000A');codeLines.push('');codeLines.push('');codeLines.push('');
</script>
<script src="site.js" async></script>
</body>