package main import ( "fmt" "strings" ) func main() { a("1a", "2b", 3, 4, 5, 6, 7, 8) println(format(" alan turing ", trim, last, strings.ToUpper)) println(strings.ToUpper(last(trim(" alan turing ")))) } func a(q, w string, v ...int) { summ := 0 for _, vv := range v { summ += vv } fmt.Printf("%s %s == %d\n", q, w, summ) } type formatter func(s string) string func trim(s string) string { return strings.Trim(s, " ") } func last(s string) string { return s[strings.LastIndexByte(s, ' ')+1 : len(s)] } func format(s string, fmtrs ...formatter) string { for _, fmtr := range fmtrs { s = fmtr(s) } return s }