<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="default.xsl"?>
<fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="true"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>355</fr:anchor><fr:addr
type="user">go-00sm</fr:addr><fr:route>go-00sm.xml</fr:route><fr:title
text="Golang › Multiple Return Values"><fr:link
type="local"
href="go-00rs.xml"
addr="go-00rs"
title="Golang">Golang</fr:link> › Multiple Return Values</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>Functions can return multiple values, often used with errors:</fr:p><fr:pre><![CDATA[func divAndRemainder(num, denom int) (int, int, error) {
    if denom == 0 {
        return 0, 0, errors.New("cannot divide by zero")
    }
    return num / denom, num % denom, nil
}]]></fr:pre></fr:mainmatter><fr:backmatter><fr:tree
toc="false"
numbered="false"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:title
text="Context">Context</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:tree
toc="true"
numbered="false"
show-heading="true"
show-metadata="true"
expanded="false"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>356</fr:anchor><fr:addr
type="user">go-00sk</fr:addr><fr:route>go-00sk.xml</fr:route><fr:title
text="Golang › Functions"><fr:link
type="local"
href="go-00rs.xml"
addr="go-00rs"
title="Golang">Golang</fr:link> › Functions</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>284</fr:anchor><fr:addr
type="user">go-00sl</fr:addr><fr:route>go-00sl.xml</fr:route><fr:title
text="Variadic Parameters">Variadic Parameters</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>Variadic functions accept a variable number of arguments as a slice:</fr:p><fr:pre><![CDATA[func addTo(base int, vals ...int) []int {
    out := make([]int, 0, len(vals))
    for _, v := range vals {
        out = append(out, base+v)
    }
    return out
}]]></fr:pre></fr:mainmatter><fr:backmatter /></fr:tree><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>285</fr:anchor><fr:addr
type="user">go-00sm</fr:addr><fr:route>go-00sm.xml</fr:route><fr:title
text="Multiple Return Values">Multiple Return Values</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>Functions can return multiple values, often used with errors:</fr:p><fr:pre><![CDATA[func divAndRemainder(num, denom int) (int, int, error) {
    if denom == 0 {
        return 0, 0, errors.New("cannot divide by zero")
    }
    return num / denom, num % denom, nil
}]]></fr:pre></fr:mainmatter><fr:backmatter /></fr:tree><fr:tree
toc="true"
numbered="true"
show-heading="true"
show-metadata="false"
expanded="true"
root="false"
xmlns:fr="http://www.jonmsterling.com/jms-005P.xml"><fr:frontmatter><fr:anchor>286</fr:anchor><fr:addr
type="user">go-00sn</fr:addr><fr:route>go-00sn.xml</fr:route><fr:title
text="Named return values">Named return values</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>Functions can have names specified for the return values, which predeclares variables that are used within the function to hold the return values. These values are initialized to their zero values allowing you to return them before any explicit use or assignment.</fr:p><fr:pre><![CDATA[func divAndRemainder(num, denom int) (result int, remainder int, err error) {
    if denom == 0 {
        err = errors.New("cannot divide by zero")
        return result, remainder, err
    }
    result, remainder = num / denom, num % denom
    return result, remainder, err
}]]></fr:pre></fr:mainmatter><fr:backmatter /></fr:tree></fr:mainmatter><fr:backmatter /></fr:tree></fr:mainmatter><fr:backmatter /></fr:tree></fr:backmatter></fr:tree>