V dneším díle tutoriálu se podíváme na funkce. Funkce je blok příkazů, které mají se mají provést po zavolání. Funkce se vytváří pomocí klíčového slova func. Už jsme se setkali s funkcí main, kterou musí mít program, pokud se má spustil a také s funkcí Println z balíčku fmt, která do konzole zobrazí předané hodnoty (argumenty). V této části tutoriálu se naučíme vytvářet si funkce vlastní.
func sayHello() { fmt.Println("Ahoj") }
Tato funkce zobrazí do konzole text „Ahoj“.
func sayName(name string) { fmt.Println("Jmenuji se", name) }
Tato funkce zobrazí text „Jmenuji se“ a zároveň text, který dostane jako argument. Dalo by se to zapsat též jako fmt.Println(„Jmenuji se “ + name)
func getBy() string { return "Měj se" }
Tato funkce vrátí hodnotu (textový retězec). Pokud chceme, aby funkce něco vrátila, použijeme klíčové slovo return. Zde říkám vrať string „Měj se“. Zároveň musíme určit, jaký datový typ má funkce vracet. Typ návratové hodnoty se zadává za kulaté závorky (func getBy() string { … }).
A zde je celý kód.
package main import ( "fmt" ) func main() { sayHello() sayName("John") fmt.Println(getBy()) } func sayHello() { fmt.Println("Ahoj") } func sayName(name string) { fmt.Println("Jmenuji se", name) } func getBy() string { return "Měj se" }
Ještě upozorním na příkaz fmt.Println(getBy()). Nejdříve se zavolá funkce getBy(), která vrátí string „Měj se“. Tento string se předá do funkce Println, která jej vytiskne. Je to totéž, jako bycho provedli toto:
var by string = getBy() fmt.Println(by)
Úkol
Vytvořte program se čtyřmi funkcemi. Každá funkce bude mít dva parametry (dvě celá čísla) a bude vracet výsledek. Funkce budou pro sčítán, odčítání, násobení a dělení. Výsledky zobrazte pomocí funkce Println. Opět upozorňuji na to, že pokud počítáte s celými čísly, tak výsledek operace dělení, který vrací desetinné číslo, bude pouze celočíselná část (3 : 2 = 1,5 celočíselná část je 1, takže výsledek bude 1 a ne 1,5)
Možné řešení
package main import ( "fmt" ) func main() { var x int = 6 var y int = 2 /* Hodnotu vrácenou funkcí můžeme uložit do proměnné a tu potom zobrazit */ var addResult = add(x, y) fmt.Println(addResult) /* Nebo můžeme rovnou zobrazit hodnotu bez mezikroku s přiřazením proměnné. */ fmt.Println(substract(x, y)) fmt.Println(multiply(x, y)) fmt.Println(divide(x, y)) } func add(x int, y int) int { return x + y } func substract(x int, y int) int { return x - y } func multiply(x int, y int) int { return x * y } func divide(x int, y int) int { return x / y }