func (c Caser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
	nSrc = len(src)  
	result := c.Bytes(src)
	if len(result) > len(dst) {
		err = transform.ErrShortDst
	}
	nDst = copy(dst, result)
	return
}
Provided for compatibility with the Transformer interface. Since Caser has no
special treatment of bytes, the bytes are converted to and from strings.
Will treat the entirety of src as ONE variable name.
package varcaser
import (
	"golang.org/x/text/transform"
)
type Caser struct {
	From Splitter
	To   CaseConvention
	transform.NopResetter
}
type Splitter interface {
	SplitWords(string) []string
}
func (c Caser) String(s string) string {
	components := []string{}
	for i, s := range c.From.SplitWords(s) {
		if i == 0 {
			components = append(components, c.To.InitialCase(s))
		} else {
			components = append(components, c.To.SubsequentCase(s))
		}
	}
	return c.To.Join(components)
}
func (c Caser) Bytes(b []byte) []byte {
	return []byte(c.String(string(b)))
}