Return multiple values: Difference between revisions
Content added Content deleted
m (→{{header|Factor}}: Use bi* to prevent swap.) |
(added go) |
||
Line 17: | Line 17: | ||
Its stack effect declares that ''*/'' always returns 2 values. To return a variable number of values, a word must bundle those values into a [[sequence]] (perhaps an array or vector). For example, ''factors'' (defined in ''math.primes.factors'' and demonstrated at [[Prime decomposition#Factor]]) returns a sequence of prime factors. |
Its stack effect declares that ''*/'' always returns 2 values. To return a variable number of values, a word must bundle those values into a [[sequence]] (perhaps an array or vector). For example, ''factors'' (defined in ''math.primes.factors'' and demonstrated at [[Prime decomposition#Factor]]) returns a sequence of prime factors. |
||
=={{header|Go}}== |
|||
Functions can return multiple values in Go: |
|||
<lang go>func addsub(x, y int) (int, int) { |
|||
return x + y, x - y |
|||
}</lang> |
|||
Or equivalently using named return style: |
|||
<lang go>func addsub(x, y int) (sum, difference int) { |
|||
sum = x + y |
|||
difference = x - y |
|||
return |
|||
}</lang> |
|||
You can assign to a comma-separated list of targets: |
|||
<lang go>sum, difference := addsub(33, 12) |
|||
fmt.Printf("33 + 12 = %d\n", sum) |
|||
fmt.Printf("33 - 12 = %d\n", difference)</lang> |
|||
=={{header|J}}== |
=={{header|J}}== |