Adott egy számjegyekből álló string. Add vissza a benne előforduló összes n hosszúságú, összefüggő részstringet abban a sorrendben, ahogy megjelennek.
Például a „49142” stringnek a következő háromjegyű sorozatai vannak:
És a következő négyjegyű sorozatai:
Ha pedig egy ötjegyű stringből hatjegyű sorozatot kérsz, azt kapod, amit érdemelsz.
Vedd figyelembe, hogy ezeknek a sorozatoknak csak szomszédos pozíciókat kell elfoglalniuk a bemenetben; a számjegyeknek nem kell számszerűen egymást követőnek lenniük.
Definiálj két függvényt: (Kettőt? Igen, néha többet kérünk a Go-tól.)
Az All az s összes n hosszúságú részstringjének listáját adja vissza.
All(n int, s string) []string
Az UnsafeFirst az s első, n hosszúságú részstringjét adja vissza.
UnsafeFirst(n int, s string) string
Ezen a ponton késznek tekintheted a feladatot, és továbbléphetsz.
De várjunk csak, talán felmerül benned egy jogos kérdés: miért Unsafe First a függvény neve? Ha érdekel, olvass tovább, mert jön egy bónuszfeladat.
Miután sikerül a go test, próbáld ki a go test -tags asktoomuch parancsot.
Ez egy build tag segítségével engedélyez egy korábban kikapcsolt tesztet.
A build tagek lehetővé teszik, hogy kiválaszd, mely fájlokat használja a csomag.
A mi esetünkben ez dönti el, hogy mely tesztfájlok kerüljenek felhasználásra.
Ezekről bővebben a Go dokumentációjában olvashatsz.
Talán észreveszed, hogy ezt az asktoomuch tesztet nem tudod kielégíteni. Kell egy mód arra, hogy jelezzük: bizonyos esetekben nem tudod kivenni a string első N karakterét. Az UnsafeFirst erre nem képes, mert csak egy stringet ad vissza.
Hogy ezt megoldjuk, adjunk a függvényhez még egy visszatérési értéket.
Definiáld a First(int, string) (first string, ok bool) függvényt, és teszteld a go test -tags first paranccsal.
Az ok bool második visszatérési argumentum gyakori és idiomatikus minta a Go-ban.
Például a map lekérdezésekben és a típus-állításokban is találkozhatsz vele.
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.