added example for naked return

This commit is contained in:
grejo.j 2022-12-14 19:47:29 +05:30
parent 30a235b655
commit 0cf5cd7a93
4 changed files with 73 additions and 6 deletions

View File

@ -12,6 +12,16 @@ func vals() (int, int) {
return 3, 7
}
// Go's return values may be named. If so, they are treated
// as variables defined at the top of the function.
// A `return“ statement without arguments returns the
// named return values. This is known as a "naked" return.
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
func main() {
// Here we use the 2 different return values from the
@ -24,4 +34,8 @@ func main() {
// use the blank identifier `_`.
_, c := vals()
fmt.Println(c)
// The split function will return the values of x & y
d, e := split(17)
fmt.Println(d, e)
}

View File

@ -1,2 +1,2 @@
c6e4f5dd9c55b5d2aaeb7e939c216ec76f042501
vZdUvLB1WbK
57e7f6308442d1364b13c9217eae8f934a72b408
U87Tk2E0TIt

View File

@ -2,6 +2,11 @@ $ go run multiple-return-values.go
3
7
7
7 10
# Naked return statements should be used only in short
# functions.
# They can harm readability in longer functions.
# Accepting a variable number of arguments is another nice
# feature of Go functions; we'll look at this next.

View File

@ -43,7 +43,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" />
<a href="https://go.dev/play/p/U87Tk2E0TIt"><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>
</td>
@ -76,6 +76,26 @@ the function returns 2 <code>int</code>s.</p>
</td>
</tr>
<tr>
<td class="docs">
<p>Go&rsquo;s return values may be named. If so, they are treated
as variables defined at the top of the function.
A `return“ statement without arguments returns the
named return values. This is known as a &ldquo;naked&rdquo; return.</p>
</td>
<td class="code leading">
<pre class="chroma">
<span class="kd">func</span> <span class="nf">split</span><span class="p">(</span><span class="nx">sum</span> <span class="kt">int</span><span class="p">)</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> <span class="p">{</span>
<span class="nx">x</span> <span class="p">=</span> <span class="nx">sum</span> <span class="o">*</span> <span class="mi">4</span> <span class="o">/</span> <span class="mi">9</span>
<span class="nx">y</span> <span class="p">=</span> <span class="nx">sum</span> <span class="o">-</span> <span class="nx">x</span>
<span class="k">return</span>
<span class="p">}</span>
</pre>
</td>
</tr>
<tr>
<td class="docs">
@ -109,11 +129,25 @@ call with <em>multiple assignment</em>.</p>
use the blank identifier <code>_</code>.</p>
</td>
<td class="code">
<td class="code leading">
<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>
</pre>
</td>
</tr>
<tr>
<td class="docs">
<p>The split function will return the values of x &amp; y</p>
</td>
<td class="code">
<pre class="chroma">
<span class="nx">d</span><span class="p">,</span> <span class="nx">e</span> <span class="o">:=</span> <span class="nf">split</span><span class="p">(</span><span class="mi">17</span><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> <span class="nx">e</span><span class="p">)</span>
<span class="p">}</span>
</pre>
</td>
@ -132,7 +166,21 @@ use the blank identifier <code>_</code>.</p>
<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>
</span><span class="go">7
</span><span class="go">7 10</span></pre>
</td>
</tr>
<tr>
<td class="docs">
<p>Naked return statements should be used only in short
functions.
They can harm readability in longer functions.</p>
</td>
<td class="code empty leading">
</td>
</tr>
@ -163,7 +211,7 @@ feature of Go functions; we&rsquo;ll look at this next.</p>
</div>
<script>
var codeLines = [];
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import \"fmt\"\u000A');codeLines.push('func vals() (int, int) {\u000A return 3, 7\u000A}\u000A');codeLines.push('func main() {\u000A');codeLines.push(' a, b :\u003D vals()\u000A fmt.Println(a)\u000A fmt.Println(b)\u000A');codeLines.push(' _, c :\u003D vals()\u000A fmt.Println(c)\u000A}\u000A');codeLines.push('');codeLines.push('');
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import \"fmt\"\u000A');codeLines.push('func vals() (int, int) {\u000A return 3, 7\u000A}\u000A');codeLines.push('func split(sum int) (x, y int) {\u000A x \u003D sum * 4 / 9\u000A y \u003D sum - x\u000A return\u000A}\u000A');codeLines.push('func main() {\u000A');codeLines.push(' a, b :\u003D vals()\u000A fmt.Println(a)\u000A fmt.Println(b)\u000A');codeLines.push(' _, c :\u003D vals()\u000A fmt.Println(c)\u000A');codeLines.push(' d, e :\u003D split(17)\u000A fmt.Println(d, e)\u000A}\u000A');codeLines.push('');codeLines.push('');codeLines.push('');
</script>
<script src="site.js" async></script>
</body>