29 lines
504 B
Go
29 lines
504 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// StringService provides operations on strings.
|
||
|
type StringService interface {
|
||
|
Uppercase(string) (string, error)
|
||
|
Count(string) int
|
||
|
}
|
||
|
|
||
|
type stringService struct{}
|
||
|
|
||
|
func (stringService) Uppercase(s string) (string, error) {
|
||
|
if s == "" {
|
||
|
return "", ErrEmpty
|
||
|
}
|
||
|
return strings.ToUpper(s), nil
|
||
|
}
|
||
|
|
||
|
func (stringService) Count(s string) int {
|
||
|
return len(s)
|
||
|
}
|
||
|
|
||
|
// ErrEmpty is returned when an input string is empty.
|
||
|
var ErrEmpty = errors.New("empty string")
|