FUNC 1g 2023-05-02 laplante@plcb.ca GOWEB/Language


title: “FUNC” author: “laplante@plcb.ca” date: 2023-05-02 version: “1.0.0” section: “1g”

category: “GOWEB/Language”

Description

In GoWeb, functions can be declared in several ways:

Key Points

func f(; j = 5) { ... }

This makes functions flexible, supporting positional arguments, named arguments, default values, and variable-length parameters.


Examples

Example 1 – Simple function

res={{
    func f() {
        "pierre";
    }

    f();
}}
res=pierre

Example 2 – Function with positional parameter

res={{
    func f(a) {
        "pierre"; " "; a;
    }

    f("laplante");
}}
res=pierre laplante

Example 3 – Function with named parameters

res={{
    func f(a; b) {
        "pierre"; " "; a; " "; b;
    }

    f(b:"1962", "laplante");
}}
res=pierre laplante 1962

Example 4 – Function calling another function

res={{
    func g(a; b) {
        "g="; a; b;
    }
    func f(a; b) {
        "pierre"; " "; a; " "; b;
        g(a, b:b);
    }

    f(b:"1962", "laplante");
}}
res=pierre laplante 1962g=laplante1962

Example 5 – Varargs usage

res={{
    func g(a; b) {
        "g="; a; b;
    }
    func f(a ...aa; b ...bb) {
        "pierre"; " "; a; " "; b;
        g(aa, b:bb);
    }

    f(b:"1962", "laplante", "05", "06", nb:3, first:28);
}}
res=pierre laplante 1962g=["05","06"]{"first":28,"nb":3}

Example 6 – Function with return but no value

res={{
    func f() { 
        "a=";
        return;
    }
    f();
}}.
res=a=.

Example 7 – Function with default parameter

res={{
    func f(; j=5) { 
        "j="; j;
        return;
    }
    f();
}}.
res=j=5.

Example 8 – Return values and default null

res={{
    func f() { 
        return;
    }
    func g() { 
    }
    a := f();
    a;
    a = g();
    a;
}}.
res=.

Example 9 – Named argument with and without default

res={{
    func f(; j) { 
        "j="; j;
        return;
    }
    func g(; j=7) { 
        "j="; j;
        return;
    }
    a := f(j:5);
    a;
    a := g();
    a;
}}.
res=j=5j=7.