Tekstas: Sprintf ir strings funkcijos
Iki šiol tekstą tik saugojom (Title string) ir spausdinom. Dabar išmoksim su juo dirbti — nes tikra programa nuolat formuoja, lygina ir tvarko tekstą.
Formatavimas su fmt.Sprintf. Println spausdina; Sprintf tą patį grąžina kaip eilutę, kad galėtum ją saugoti ar toliau naudoti:
line := fmt.Sprintf("Knyga: %s (%d psl.)", it.Title, it.Pages)
// line == "Knyga: The Go Programming Language (380 psl.)"
Naudingiausi „veiksneliai" (verbs): %s — eilutė, %d — sveikas skaičius, %v — bet kokia reikšmė, %.1f — realusis su vienu skaitmeniu, %q — eilutė kabutėse. O lygiavimui: %-30s — palieka tekstą kairėje, užpildo iki 30 stulpelių (kad sąrašo eilutės susilygiuotų).
Dažniausios strings funkcijos (importuok "strings"):
strings.ToLower("Go") // "go"
strings.Contains(t, "prog") // ar yra poeilutė?
strings.HasPrefix(t, "The ") // ar prasideda...?
strings.TrimSpace(" labas \n") // "labas" — nuima tarpus/naujas eilutes
strings.ReplaceAll(t, " ", "-") // pakeičia visus tarpus brūkšniais
strings.Split("a,b,c", ",") // []string{"a", "b", "c"}
strings.Join([]string{"a","b"}, ", ") // "a, b"
Palyginimas. Paprastas == lygina tiksliai (skiria didžiąsias/mažąsias). Jei nori nejautraus registrui palyginimo — strings.EqualFold("Go", "go") grąžina true.
Šiuos įrankius iškart pritaikysim: Sprintf — tvarkingam įrašo atvaizdavimui, Split/TrimSpace — vartotojo įvesčiai sutvarkyti. Bet pirma — spąstai, dėl kurių len gali tave apgauti.