A Go nyelvben az alkalmazások csomagokba szerveződnek. A csomag az ugyanabban a mappában található forrásfájlok gyűjteménye. Egy mappában minden forrásfájlnak ugyanazt a csomagnevet kell tartalmaznia a fájl elején. A konvenció szerint a csomagokat ugyanúgy nevezik el, mint a mappát, amelyben találhatók.
package greeting
A Go egy kiterjedt szabványos könyvtárat biztosít, amely csomagokból áll, és amelyeket a programodban az import kulcsszóval használhatsz.
A szabványos könyvtár csomagjait a nevükkel importálod.
package greeting
import "fmt"
Ezután egy importált csomagra a csomag nevével hivatkozol:
world := "World"
fmt.Sprintf("Hello %s", world)
A Go a deklaráció módjából állapítja meg, hogy egy elem meghívható-e más csomagok kódjából. Ahhoz, hogy egy függvény, típus, változó, konstans vagy struktúramező kívülről látható legyen (ezt exportáltnak nevezik), a nevének nagybetűvel kell kezdődnie.
package greeting
// Hello is a public function (callable from other packages).
func Hello(name string) string {
return "Hello " + name
}
// hello is a private function (not callable from other packages).
func hello(name string) string {
return "Hello " + name
}
A Go biztosít egy beépített fmt nevű csomagot (formázócsomag), amely számos függvényt kínál a bemenet és a kimenet formázásának kezelésére.
A leggyakrabban használt függvény a Sprintf, amely olyan formázó igéket, például a %s-t használ, hogy értékeket illesszen egy stringbe, és visszaadja ezt a stringet.
import "fmt"
food := "taco"
fmt.Sprintf("Bring me a %s", food)
// Returns: Bring me a taco
A Go-ban a lebegőpontos értékek kényelmesen formázhatók a Sprintf igéivel: %g (tömör ábrázolás), %e (kitevő) vagy %f (kitevő nélküli).
Mindhárom ige lehetővé teszi a mező szélességének és a numerikus pozíciónak a szabályozását.
import "fmt"
number := 4.3242
fmt.Sprintf("%.2f", number)
// Returns: 4.32
Az elérhető igék teljes listáját a formázócsomag dokumentációjában találod.
A fmt más, stringekkel dolgozó függvényeket is tartalmaz, például a Println-t, amely egyszerűen kiírja a kapott argumentumokat a konzolra, és a Printf-et, amely ugyanúgy formázza a bemenetet, mint a Sprintf, mielőtt kiírja.
Élt egyszer egy különc programozó egy furcsa házban, amelynek rácsos ablakai voltak. Egy nap elvállalt egy állást egy online álláshirdetési oldalon keresztül, hogy építsen egy bulirobotot. A robotnak az a feladata, hogy köszöntse az embereket, és a helyükre kísérje őket. Az első kiadás nagyon technikaira sikerült, és jól mutatta, hogy a programozó mennyire nem ért az emberekhez. Ebből néhány dolog a következő kiadásba is átkerült.
Valósítsd meg a Welcome függvényt, amely a megadott név felhasználásával egy üdvözlő üzenetet ad vissza:
Welcome("Christiane")
// => Welcome to my party, Christiane!
Valósítsd meg a HappyBirthday függvényt, amely a személy megadott neve és életkora alapján egy születésnapi üzenetet ad vissza.
Sajnos a programozó egy kicsit kérkedő típus, így a robotnak fitogtatnia kell a tudását minden vendég születésnapjáról.
HappyBirthday("Frank", 58)
// => Happy birthday Frank! You are now 58 years old!
Valósítsd meg az AssignTable függvényt, amely útbaigazítást ad.
Öt paramétert kell fogadnia.
string)int)string)string)float64)A pontos eredményformátum az alábbi példában látható.
A robot az asztal számát háromjegyű formátumban adja meg. Ha a szám kevesebb mint háromjegyű, akkor annyi vezető nullát kap, hogy háromjegyű legyen (pl. a 3-ból 003 lesz). A robot az asztal távolságát is megemlíti. Szerencsére csak egy jegyre kerekített pontossággal.
AssignTable("Christiane", 27, "Frank", "on the left", 23.7834298)
// =>
// Welcome to my party, Christiane!
// You have been assigned to table 027. Your table is on the left, exactly 23.8 meters from here.
// You will be sitting next to Frank.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Go nyelvet 34 fogalom165 feladat segítségével, valódi emberi mentorálással, mindez ingyen.