Kurzusok
/
Go
Go
/
Feladatok
/
Partirobot
Partirobot

Partirobot

Tanulófeladat

Bevezetés

Csomagok

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
}

String formázása

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.

Utasítások

É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.

1. Köszöntsd az új vendéget a buliban

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!

2. Köszöntsd azt az új vendéget, akinek ma van a születésnapja

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!

3. Add meg az útbaigazítást

Valósítsd meg az AssignTable függvényt, amely útbaigazítást ad. Öt paramétert kell fogadnia.

  • Az új vendég neve, akit köszönteni kell (string)
  • Az asztal száma (int)
  • Az asztalszomszéd neve (string)
  • Az irány, amerre az asztal található (string)
  • Az asztal távolsága (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.
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Go Exercism

Készen állsz elkezdeni a(z) Partirobot feladatot?

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.