import (
"strings"
)
func Accum(s string) string {
var result string
// looping range s
for i, v := range s {
var word string
loop := i
word += strings.ToUpper(string(v))
// looping range word
for loop > 0 {
word += strings.ToLower(string(v))
loop--
}
if i > 0 {
result += "-"
}
result += word
}
return result
}
Best Solution
import (
"strings"
)
func Accum(s string) string {
parts := make([]string, len(s))
for i, v := range s {
parts[i] = strings.ToUpper(string(v)) + strings.Repeat(strings.ToLower(string(v)), i)
}
return strings.Join(parts, "-")
}