Tema
/
Struktūrinis programavimas GO
Pamoka 7 / 14 Eilutės (tekstas) ~50 min
📖 Teorija

Pratybos — parašyk funkcijas

Skaityti apie eilutes neužtenka — reikia rašyti. Penkios užduotys, nuo lengvos iki sunkesnės. Kiekvienai parašyk funkciją, paleisk su pavyzdžiais, tada palygink su sprendimu. Bandyk pats prieš žiūrėdamas.

1 (lengva) — charCount. Grąžink tikrą simbolių skaičių (ne baitų).

charCount("ąžuolas") → 7      charCount("obuolys") → 7
func charCount(s string) int {
    return utf8.RuneCountInString(s)
}

2 (lengva) — initials. Iš „Jonas Jonaitis" padaryk „JJ": pirma kiekvieno žodžio raidė, didžioji.

initials("Jonas Jonaitis") → "JJ"      initials("ąžuolas uosis") → "ĄU"
func initials(fullName string) string {
    var b strings.Builder
    for _, word := range strings.Fields(fullName) { // Fields skaido pagal tarpus
        r := []rune(word)
        b.WriteString(strings.ToUpper(string(r[0]))) // r[0] = pirmas SIMBOLIS
    }
    return b.String()
}

3 (vidutinė) — truncateRunes. Sutrumpink iki max simbolių ir pridėk „…", jei ilgesnė. Svarbu: neperkirsk „ą" per pusę.

truncateRunes("ąžuolynas prie ežero", 9) → "ąžuolynas…"
truncateRunes("Go", 9) → "Go"
func truncateRunes(s string, max int) string {
    r := []rune(s)
    if len(r) <= max {
        return s
    }
    return string(r[:max]) + "…"
}

4 (vidutinė) — slug. Padaryk „nuorodos" formą: mažosios raidės, tarpai → brūkšniai, be kraštinių tarpų.

slug("  The Go Language ") → "the-go-language"
func slug(title string) string {
    return strings.ReplaceAll(strings.ToLower(strings.TrimSpace(title)), " ", "-")
}

5 (sunkesnė) — banner su strings.Builder. Grąžink s, pakartotą n kartų, naudodamas Builder (ne += cikle).

banner("=", 5) → "====="      banner("ab", 3) → "ababab"
func banner(s string, n int) string {
    var b strings.Builder
    for i := 0; i < n; i++ {
        b.WriteString(s)
    }
    return b.String()
}

Patarimas. Kiekvieną funkciją laikinai iškviesk main iš karto (fmt.Println(charCount("ąžuolas"))) ir patikrink prieš pavyzdžius. Šios mažos, „grynos" funkcijos (be įvesties, be būsenos) — būtent tokias 13 pamokoje testuosim automatiškai su go test.