我正在编写一个处理字母 Z 的函数:如果 Z 用作独立单词,则将其转换为“z”,如果它是单词的一部分,则将其转换为“z”。
在处理字母之前,会应用一个替换字母组合的函数,例如“sh”->“ш”等等。这就是为什么我使用符文而不是字符串进行处理(这允许更正确地解释字节)。如何从函数返回一个可能的值——一个符文或一个符文数组?
源代码:
func Zhandler(a string, i int) (rune || []rune) {
if i == 0 && utf8.RuneCountInString(a) == 1 {
return []rune{'з', 'э', 'т'}
}
return 'з'
}
Golang 是一种强类型语言,多态性仅可用于接口:如果类型
А和В实现一个公共接口I,那么返回的函数I可以返回类型的对象A,或者类型的对象B。rune和[]rune是没有实现任何接口的基类型,因此它们没有共同的类型。模拟多态性的选项有很多。
例如,您可以返回两个值:
在调用者中,检查第二个返回值是否等于
nil你可以创建一个结构
ZhandlerReturn但说实话,为什么需要单独的符文?那么,你肯定要将结果与其他符文阵列结合起来吧?因此在两种情况下都返回数组: